我是EntityFramework的新手。
我的应用程序有一个上下文对象实例池(每个上下文与数据库有1个连接)。
问题在于,当我更新对象(并调用SaveChanges)时,数据会在数据库和更新上下文中更新,但是当我从其他实例中选择时,它会获取所选对象的旧数据。
示例:
让我们想象一个名为tbl的表。
该表有2列:id和data。
有1行:id = 1,data = 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 :(得分:0)
我认为刷新你的实体应该做到这一点,如下:
//after
context2.SaveChanges();
//refresh obj1
context1.Refresh(RefreshMode.StoreWins, obj1);