2010-07-08 59 views
0

我是EntityFramework的新成員。實體框架:如何使用多於一個上下文?

我的應用程序有一個上下文對象實例池(每個上下文有1個連接到數據庫)。

問題是,當我更新對象(並調用SaveChanges)時,數據在數據庫和更新上下文中更新,但是當我從其他實例中選擇時,它將獲取所選對象的舊數據。

例子:

讓我們想象一下一個名爲TBL表。

該表有2列:id和數據。

有1行:ID = 1,數據= 2

EFContext context1 = new EFContext(); 

EFContext context2 = new EFContext(); 

var obj1 = context1.tbl.Where(a => a.id == 1); 

var obj2 = context2.tbl.Where(a => a.id == 1); 

obj2.data = 10; 

context2.SaveChanges(); 

var obj3 = context1.tbl.Where(a => a.id == 1); 

執行這些行之後,obj3.data含有2,而不是10

如何解決這個問題?

我不想每次我想訪問數據庫時創建一個上下文實例。

謝謝!

回答

0

我想刷新您的實體應該做的伎倆,就像這樣:

//after 
context2.SaveChanges(); 

//refresh obj1 
context1.Refresh(RefreshMode.StoreWins, obj1); 
+0

感謝。 但是如果我內部有很多對象,是否有刷新所有表的方法? 有沒有辦法讓對象每次嘗試選擇數據時都從數據庫中獲取數據? 再次感謝。 – Mattan 2010-07-20 11:56:08