实体框架:附加相关对象和其他状态管理

时间:2011-07-06 18:30:38

标签: c# entity-framework code-first

我有一个使用Entity Framework Code First的应用程序。我正在尝试编写我的资源访问层。我有几个对象都有单独的数据库表和很多对象关系。有人能指出我与相关对象的CRUD方法的最新示例吗?我发现的所有东西都使用旧版本(我使用的是DbContext,而不是ObjectContext等),我自己写的时候遇到了问题。

例如,我目前正在处理一个与自身有父子关系的对象。我正在尝试编写Create方法。如果我使用context.Objects.Add(newObject),那么所有子对象的状态也会更改为已添加,这意味着会添加重复的子对象。所以我尝试循环遍历所有子节点并将它们附加到上下文中,但是之后不存在的任何子节点都不会被添加到数据库中并且抛出DbUpdateException。

我是否可以附加所有相关实体并使其状态正确?你能给我的任何帮助将不胜感激。谢谢!

编辑:

我尝试使用Load()显式加载子项,然后添加初始对象。不幸的是,它导致了一个例外,因为父评论的子项列表中有子项,但现有子项的parentID尚未更新。

1 个答案:

答案 0 :(得分:0)

没有办法附加整个图表并让EF自动设置正确的状态 - 自{ObjectContext API'以来these problems没有改变。您必须始终为每个实体和关系手动设置状态,或者必须从附加实体构建图形。唯一的例外是Self tracking entities,但DbContext API不支持它们。