我有一个使用Entity Framework Code First的应用程序。我正在尝试编写我的资源访问层。我有几个对象都有单独的数据库表和很多对象关系。有人能指出我与相关对象的CRUD方法的最新示例吗?我发现的所有东西都使用旧版本(我使用的是DbContext,而不是ObjectContext等),我自己写的时候遇到了问题。
例如,我目前正在处理一个与自身有父子关系的对象。我正在尝试编写Create方法。如果我使用context.Objects.Add(newObject)
,那么所有子对象的状态也会更改为已添加,这意味着会添加重复的子对象。所以我尝试循环遍历所有子节点并将它们附加到上下文中,但是之后不存在的任何子节点都不会被添加到数据库中并且抛出DbUpdateException。
我是否可以附加所有相关实体并使其状态正确?你能给我的任何帮助将不胜感激。谢谢!
编辑:
我尝试使用Load()
显式加载子项,然后添加初始对象。不幸的是,它导致了一个例外,因为父评论的子项列表中有子项,但现有子项的parentID尚未更新。
答案 0 :(得分:0)
没有办法附加整个图表并让EF自动设置正确的状态 - 自{ObjectContext API'以来these problems没有改变。您必须始终为每个实体和关系手动设置状态,或者必须从附加实体构建图形。唯一的例外是Self tracking entities,但DbContext API不支持它们。