C# 实体框架:如何使用多个上下文?

C# 实体框架:如何使用多个上下文?,c#,visual-studio,oracle,multithreading,entity-framework,C#,Visual Studio,Oracle,Multithreading,Entity Framework,我是EntityFramework的新手 我的应用程序有一个上下文对象实例池,每个上下文有一个到数据库的连接 问题是,当我更新一个对象并调用SaveChanges时,数据会在数据库和更新上下文中更新,但当我从其他实例中选择时,它会获取所选对象的旧数据 例如: 让我们想象一张名为tbl的桌子 该表有两列:id和数据 共有1行:id=1,data=2 EFContext context1 = new EFContext(); EFContext context2 = new EFContext()

我是EntityFramework的新手

我的应用程序有一个上下文对象实例池,每个上下文有一个到数据库的连接

问题是,当我更新一个对象并调用SaveChanges时,数据会在数据库和更新上下文中更新,但当我从其他实例中选择时,它会获取所选对象的旧数据

例如:

让我们想象一张名为tbl的桌子

该表有两列:id和数据

共有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

我怎样才能解决这个问题

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


谢谢

我认为刷新实体应该做到这一点,如下所示:

//after
context2.SaveChanges();

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

谢谢但是如果我有很多东西在里面,有没有办法刷新所有的桌子?是否有一种方法可以使对象在每次尝试选择数据时都从数据库中获取数据?再次感谢。