行插入顺序实体框架

Wou*_*ter 15 entity-framework transactions insert

我正在使用事务在多个表中插入多行.对于这些行,我想按顺序添加这些行.在调用SaveChanges时,所有行都不按顺序插入.

当不使用事务并在每次插入后保存更改确实保持顺序,但我确实需要所有条目的事务.

Ale*_*mes 10

在实体框架中进行的订单插入/更新和删除取决于实体框架中的许多内容.

例如,如果您在新类别中插入新产品,我们必须在产品之前添加类别.

这意味着如果您有大量的更改,那么我们必须首先满足本地排序约束,这实际上就是我们所做的.

您在上下文中执行操作的顺序可能与这些规则冲突.例如,如果你这样做:

ctx.AddToProducts(
   new Product{
      Name = "Bovril",
      Category = new Category {Name = "Food"}
   }
);
Run Code Online (Sandbox Code Playgroud)

效果是首先添加产品(到上下文)然后当我们走图表时我们也添加了类别.

即插入上下文的顺序是:

Product
Category
Run Code Online (Sandbox Code Playgroud)

但由于参照完整性约束,我们必须在尝试插入数据库之前重新排序:

Category
Product
Run Code Online (Sandbox Code Playgroud)

所以这种本地重新排序是不容谈判的.

但是,如果没有像这样的本地依赖关系,理论上可以保留排序.遗憾的是,我们目前没有跟踪"何时"某些内容被添加到上下文中,出于效率原因,我们不会跟踪实体以保留像列表这样的结构.因此,我们目前无法保留不相关插入的顺序.

不过我们最近一直在辩论,所以我很想知道这对你有多重要?

希望这可以帮助

亚历克斯

项目经理实体框架小组

  • 这事有进一步更新吗?我有一个位置,我的表对备用键有约束,因此模型上没有可见的关系.(AK是userName,而不是userId).那么如何更改插入的顺序,截至目前,当我添加用户然后将用户添加到组时,savechanges失败. (3认同)
  • 对此有任何更新?我也有同样的问题. (2认同)