使用实体框架插入对象列表

时间:2012-07-11 06:41:08

标签: entity-framework c#-4.0 entity-framework-4

您好我正在尝试在ObjectContextManager中附加多个对象,并尝试在“已添加”模式下设置其状态。这些对象具有一些导航属性,当我尝试在附加第一个对象后附加任何对象时。它抛出了我的错误

  

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

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

请指导

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您应该使用随机ID初始化您添加/附加的新实体的ID(如果您使用Int32作为Id类型,则为Guid.NewGuid().GetHashCode()

否则所有实体的默认Id都为0,因此当您附加实体时,ObjectStateManager会抛出异常。