2012-07-11 83 views
3

嗨,我想附加ObjectContextManager中的多个对象,并尝试设置他们的状态在“添加”模式。这些对象有一些导航属性与他们,当我尝试附加第一个对象后附加任何对象。它会抛出错误使用实体框架插入对象列表

ObjectStateManager中已存在具有相同键的对象。 ObjectStateManager不能使用同一个键跟踪多个对象。

原因似乎非常明显,但其解决方案是什么。

请指导你添加新的实体

回答

0

你应该初始化ID /用随机ID连接(如Guid.NewGuid().GetHashCode()如果你使用的Int32为ID型)

否则有所有实体的默认标识0,当你附加实体时,ObjectStateManager会抛出异常。

1

通过在实体上调用AttachAddObject实际上附加或添加整个对象图(EF遍历导航属性并对每个相关属性执行操作)。当您尝试添加或附加已作为对象图一部分附加或添加的实体时,您将会看到此异常。解决方案是了解您的数据模型,并仅为脱节的对象图调用AddObjectAttach