实体对象不能被IEntityChangeTracker的多个实例引用
本文关键字:实例 引用 IEntityChangeTracker 对象 不能 实体 | 更新日期: 2023-09-27 17:58:01
我使用EF作为ORM。
我会根据每个请求处理objectContext
。
我将实体保存在缓存层中,因为我的服务获得了大量流量。
我有时会从缓存中得到一些实体的错误objectContext already disposed
。
我已经将此代码添加到从缓存中检索的元素中
if (maMDBEntities.Entry(group).State == EntityState.Detached)
{
maMDBEntities.Groups.Attach(group);
}
但现在我有时会遇到这样的错误:
实体对象不能被IEntityChangeTracker的多个实例引用。
使用Attach()
从一开始就是一个错误的解决方案吗?
正如我们在您的另一个问题中告诉您的那样(EF::attach(entity)会解决objectContext已经被解压缩吗?),在将实体附加到另一个上下文之前,必须先分离实体!
如果maMDBEntities
是新上下文(而不是加载数据的上下文),则从上下文的角度来看,EntityState不是"附加"的。所以你的支票不够。
对于未加载实体的上下文,此maMDBEntities.Entry(group).State == EntityState.Detached
将始终为true。