我将一些保存EF entities
在我编写的缓存层中。当我从缓存中检索它们时,有时会收到“contextObject is disposed”错误。contextObject
从缓存中获取实体后,我想附加一个新的。这会导致什么副作用?如果我附加一个已经附加的实体会发生什么?表现?
问问题
2985 次
3 回答
2
异常“ ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。”
请参阅 Context.DbSet.Local() 方法以获取 Context 中的所有对象。
于 2013-02-05T16:27:32.013 回答
1
试试这样。
ObjectStateEntry entry;
if(context.ObjectStateManager.TryGetObjectStateEntry(entity, out entry)) {
return (entry.State != EntityState.Detached);
}
也检查这个答案。附加到数据上下文的实体
于 2013-02-05T16:36:45.447 回答
0
它将抛出一个异常(不确定是哪个),因为该对象已经附加。
只需在代码中尝试一下,尝试起来非常简单。它发生在我身上。
顺便说一句,您应该在结束使用 contextobject 后立即处理它。如果不这样做,您会得到一些奇怪的行为(对象未更新,直接在 db 中修改的缓存对象不反映更改等)。
问候。
于 2013-02-05T16:23:10.687 回答