我在我写的缓存层中保存了一些EF entities
。当我从缓存中检索它们时,我有时会得到“contextObject was dispos”错误。从缓存中获取实体后,我想附加一个新的contextObject
。这可能导致什么副作用?如果我附加已经附加的实体会怎样?性能
答案 0 :(得分:1)
异常 “ ObjectStateManager中已存在具有相同键的对象.ObjectStateManager无法使用相同的键跟踪多个对象。”
请参阅Context.DbSet.Local()方法以获取Context中的所有对象。
答案 1 :(得分:1)
尝试这样。
ObjectStateEntry entry;
if(context.ObjectStateManager.TryGetObjectStateEntry(entity, out entry)) {
return (entry.State != EntityState.Detached);
}
也检查这个答案。 Entity Attached to a data context
答案 2 :(得分:0)
它将抛出异常(不确定是哪个),因为该对象已经附加。
只需在代码中试用它,尝试起来非常简单。它发生在我身上。
顺便说一句,你应该在结束使用后立即处理你的contextobject。如果不这样做,你会得到一些奇怪的行为(对象没有更新,直接在db中修改的缓存对象不会反映变化等)。问候。