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)
所以这种本地重新排序是不容谈判的.
但是,如果没有像这样的本地依赖关系,理论上可以保留排序.遗憾的是,我们目前没有跟踪"何时"某些内容被添加到上下文中,出于效率原因,我们不会跟踪实体以保留像列表这样的结构.因此,我们目前无法保留不相关插入的顺序.
不过我们最近一直在辩论,所以我很想知道这对你有多重要?
希望这可以帮助
亚历克斯
项目经理实体框架小组