IEntityChangeTracker的多个实例不能引用实体对象
我使用EF作为ORM。
我在每个请求上都objectContext
了objectContext
。
我将实体保存在缓存层中,因为我的服务获得了大量流量。
我有时得到错误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。