实体框架:如何使用多于一个上下文?

问题描述:

我是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

如何解决这个问题?

我不想每次我想访问数据库时创建一个上下文实例。

谢谢!

我想刷新您的实体应该做的伎俩,就像这样:

//after 
context2.SaveChanges(); 

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

感谢。 但是如果我内部有很多对象,是否有刷新所有表的方法? 有没有办法让对象每次尝试选择数据时都从数据库中获取数据? 再次感谢。 – Mattan 2010-07-20 11:56:08