我最近从EntityFramework
4.3.1(Self Tracking
)更新到EntityFramework
6.1.2(没有Detect Changes
)。由于MVC
客户端具有复杂的实体树视图,以及一些其他技术选择(如使用SQL Server
的{{1}}),我在分离模式下在数据库前工作。每个请求都有一个RowVersion
的新实例,我为每个实体标记了上下文的状态。
它运作得很好。 Insert正在处理完整的实体树。更新正在处理正在处理的类型。在DbContext
4上,我必须使所有导航属性都为空以使该流程正常工作。现在我似乎不必这样做。
但是,我确实在以下场景中得到了上述异常:
- 我有一个父实体节点,例如 Person ,已被修改;
- 它包含多个相同类型的子实体节点,例如 Phones ,它们是新条目,因此它们的标识值相同(0表示新的);
醇>
将 Person 的条目的状态设置为modified会导致异常,但我希望EntityFramework
不会尝试处理新的(添加的)子实体的状态。我可以看到,当我在修改后的 Person 下只有一部新手机时, Phone 条目的状态从分离到未更改。
我是否需要做一些事情EntityFramework
知道只处理父实体而没有修改的导航属性?或者我必须像以前一样解决所有导航问题?