我使用 EF 作为 ORM。
我在每次请求时都处理 objectContext
。
我将实体保存在缓存层中,因为我的服务有大量流量。
对于从缓存中获取的某些实体,我有时会收到错误 objectContext already disposed
。
我已将此代码添加到从缓存中检索到的元素
if (maMDBEntities.Entry(group).State == EntityState.Detached)
{
maMDBEntities.Groups.Attach(group);
}
但现在我有时会收到此错误:
An entity object cannot be referenced by multiple instances of IEntityChangeTracker.
使用 Attach()
从一开始就是一个错误的解决方案吗?
最佳答案
正如我们在您的另一个问题 (will EF::attach(entity) will solve objectContext is already desposed?) 中告诉您的那样,您必须先分离实体,然后再将其附加到另一个上下文!
如果 maMDBEntities
是一个新的上下文(不是那个加载数据的上下文),从这个上下文的角度来看,EntityState 不是“附加的”。所以你的支票是不够的。
这 maMDBEntities.Entry(group).State == EntityState.Detached
对于未加载实体的上下文始终为真。
关于c# - 实体对象不能被 IEntityChangeTracker 的多个实例引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14725831/