3

我将一些保存EF entities在我编写的缓存层中。当我从缓存中检索它们时,有时会收到“contextObject is disposed”错误。contextObject从缓存中获取实体后,我想附加一个新的。这会导致什么副作用?如果我附加一个已经附加的实体会发生什么?表现?

4

3 回答 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 回答