IEntityChangeTracker的多个实例不能引用实体对象

我使用EF作为ORM。

我在每个请求上都objectContextobjectContext

我将实体保存在缓存层中,因为我的服务获得了大量流量。

我有时得到错误objectContext already disposed为我从缓存中获得的一些实体处理了。

我已将此代码添加到从缓存中重新获取的元素中

 if (maMDBEntities.Entry(group).State == EntityState.Detached) { maMDBEntities.Groups.Attach(group); } 

但现在我有时会收到这个错误:

IEntityChangeTracker的多个实例不能引用实体对象。

从一开始就使用Attach()一个不正确的解决方案?

正如我们在你的另一个问题中告诉你的那样( EF :: attach(实体)将解析objectContext已经被废弃了吗? ),你必须在将实体附加到另一个Context之前将它们分离!

如果maMDBEntities是新的Context(不是加载数据的那个),则EntityState不会从此Contexts视点“附加”。 所以你的检查是不够的。

对于未加载实体的上下文,此maMDBEntities.Entry(group).State == EntityState.Detached始终为true。