我的程式運行的時候要保存一些紀錄,資料量是很小的。
我的愿望是程式運行時加載一下資料庫,把所有資料都取出來放在記憶體里。
這樣我在程式運行中對記憶體中資料進行修改的時候,被ef檢測到,
當我SaveChanges()時,向資料庫更新發生改變的資料。
但是,在我使用 .First() 定位資料的時候,發現程式還是去訪問了資料庫。
這次訪問我覺得完全是多余的,因為資料在記憶體里面有。
能否按照我上面描述的用法使用EntityFrameworkCore?
即,只讀取一次,資料改變時,保存。
查找資料時不要再訪問資料庫了,因為記憶體里有資料。
uj5u.com熱心網友回復:
哈,上次有個貼說 怎么老是讀快取,怎么才能每次都讀資料庫,這個貼就跟那次的是相反的,
你應該考慮一下 資料是否有 跟蹤,或者EF背景關系的 生命周期
uj5u.com熱心網友回復:
可否具體。我只需要它讀一次資料庫,剩下全部讀快取,干跟蹤的活。uj5u.com熱心網友回復:
把所有資料都取出來放在記憶體里->都取出來這種方式是不建議用的。放到記憶體里的操作是ToList操作吧,而非回傳的IQueryable介面
uj5u.com熱心網友回復:
這樣的話,資料賦值的時候要做2遍,而且賦值定位紀錄的時候,還需要訪問資料庫做查詢。我的資料量很小,全部取出之后做跟蹤,是做不到嗎?uj5u.com熱心網友回復:
資料庫的查詢結果轉List我知道,只要ToList()就行了。那我記憶體中的這個List經過修改后,還能變回去,再去更新資料庫嗎?
uj5u.com熱心網友回復:
這個要看是怎么折騰這個list的了,如果導致其變成了斷開連接的物體就造成你描述的問題
官方檔案上有相關描述
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/284634.html
標籤:C#
上一篇:關于comboBox控制元件的SelectedValue屬性
下一篇:檔案名稱被修改如何彈出提示資訊
