如以下Code
context.Products.Load(); context.Products.Local.Count
再來介紹一下Reload,當先透過EF撈取一筆資料
var product = context.Products.Find(1);
然後去更新Database這筆資料的值,再以相同語法取得product是不會被更新的,原因是這筆資料是由追蹤快取取得的,需要透過Reload,來更新這筆資料
如以下Code
context.Entry(product).Reload();
總結:
一.
在不當使用EF的情況下,容易造成重複查詢而衍生效能問題,如要避免此情況發生可以透過Local來減少查詢的動作
二.
而要確保資料是否最新,可使用Reload來更新,不然不是透過EF動作的而是Database更新時,則相同的查詢就會是由追蹤快取取得