使用EF 4插入行时违反唯一键约束

时间:2012-07-11 08:07:24

标签: entity-framework entity-framework-4

我要插入的对象有一个父对象作为导航属性。

当我“添加”要插入的对象时,它还将我的父对象(已插入)的ObjectStateManager设置为Added并尝试插入它。我在SQL事件探查器中验证了它,因此引发了唯一密钥违规的例外。

我从两个方面摆脱了这个

  1. 在添加对象之前,我将所有导航属性设置为null
  2. 将父对象的ObjectStateManager设置为Modified
  3. 但这似乎更像是黑客而不是解决方案。我相信实体框架必须有一些优雅的解决方案。

    请建议。

1 个答案:

答案 0 :(得分:0)

第二种方法是解决这个问题的正确方法。当您致电AddObject时,EF会在Added状态下附加对象图中的所有实体。如果图表中还有现有实体,则必须通过将状态设置为UnchangedModified来告知EF有关它们的信息。