之前遇到EntityFramework讀取資料時怎麼會讀出來的資料居然不一樣
前言
來看一下程式碼讀取資料不同步的情況
static void Test()
{
DataContext context1 = new DataContext();
DataContext context2 = new DataContext();
var item1 = context1.Customer.FirstOrDefault(a => a.ID == 1);
item1.Name = "edit by context1";
context1.SaveChanges();
var item2 = context2.Customer.FirstOrDefault(a => a.ID == 1);
item2.Name = "edit by context2";
context2.SaveChanges();
//此時資料庫已經Name改成edit by context2
var item3 = context1.Customer.FirstOrDefault(a => a.ID == 1);
Console.WriteLine($"item3 ID:{item3.ID}, NAME:{item3.Name}");
//但是context1讀出來的Name還是edit by context1
}
當時測試結果判斷應該是快取問題 所以解法就是在重新new DataContext
Reload
其實EntityFramework有個功能叫做Reload
context1.Entry(item1).Reload();
這樣就可以重新讀取到最新的資料了
結語
還有一些方式可以解這個問題請看
Entity Framework Cache Busting
如果內容有誤請多鞭策謝謝