实体框架:如何使用多于一个上下文?
问题描述:
我是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);
感谢。 但是如果我内部有很多对象,是否有刷新所有表的方法? 有没有办法让对象每次尝试选择数据时都从数据库中获取数据? 再次感谢。 – Mattan 2010-07-20 11:56:08