EF4无法将对象添加到上下文中,即使我确信它没有附加

时间:2011-11-14 16:30:09

标签: c# asp.net entity-framework poco objectcontext

我无法向ObjectContext添加一个对象,即使我确信它没有附加且它与不同的上下文无关

我正在使用带有POCO对象的EF 4。

如果我尝试

_currentContext.ObjectStateManager.GetObjectStateEntry(entityIn)

然后我收到错误

The ObjectStateManager does not contain an ObjectStateEntry with a reference to an object of type 'System.Data.Entity.DynamicProxies.OrderItem_7D361CB49D75AA90681B4BA3F924139ECB0FC1426E38E90C7B884A4E9CD777DF'.

足够公平,它不存在。所以如果我试着附上它

_currentContext.AttachTo("OrderItems", entityIn)

然后我得到

An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

我怎样才能得到这两个错误。他们不矛盾吗?如何将其附加到上下文中?

修改

整个应用程序中只有一个上下文。模式是

  1. 通过存储库对象的所有调用。
  2. 对象从工厂类获取其objectcontext。
  3. 此工厂类创建上下文或从请求对象获取上下文,从而保证只有一个上下文用于页面生命周期
  4. 如果您对上下文对象进行两次实例化,则每个实例的哈希码都是相同的。

1 个答案:

答案 0 :(得分:2)

对象entityIn可能引用了另一个上下文中的对象。

但是,这里的真正的问题是你在范围内有多个上下文。这样做是很难。在Web应用程序中,每个请求应该有一个上下文句点。