[沒有蠢問題] EntityFramework 資料不同步

之前遇到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

如果內容有誤請多鞭策謝謝