如果我附加已经附加在EF中的实体会怎样?

时间:2013-02-05 16:13:18

标签: c# entity-framework

我在我写的缓存层中保存了一些EF entities。当我从缓存中检索它们时,我有时会得到“contextObject was dispos”错误。从缓存中获取实体后,我想附加一个新的contextObject。这可能导致什么副作用?如果我附加已经附加的实体会怎样?性能

3 个答案:

答案 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中修改的缓存对象不会反映变化等)。

问候。

相关问题