1

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

当我“添加”要插入它的对象时,它还将ObjectStateManager我的父对象(已经插入)设置为Added并尝试插入它。我已经在 SQL Profiler 中对其进行了验证,因此引发了唯一键违规的异常。

我通过两种方式摆脱这个

  1. 在添加对象之前,我将所有导航属性设置为 null
  2. ObjectStateManager父对象的 设置为Modified

但这似乎更像是破解而不是解决方案。我相信实体框架必须对此有一些优雅的解决方案。

请建议。

4

1 回答 1

0

第二种方法是解决这个问题的正确方法。当您调用AddObjectEF 时,将附加状态中的对象图中的所有实体Added。如果图中还有现有实体,则必须通过将它们的状态设置为Unchanged或来告知 EF Modified

于 2012-07-11T08:30:27.023 回答