我正在使用事务在多个表中插入多行.对于这些行,我想按顺序添加这些行.调用SaveChanges后,所有行都将按顺序插入.
当不使用事务并保存更改后,每次插入确实保持顺序,但我真的需要一个所有条目的事务.
解决方法
实体框架中的订单插入/更新和删除取决于实体框架中的许多内容.
例如,如果您在新类别中插入新产品,我们必须在产品之前添加类别.
这意味着如果您有一大组更改,那么我们必须首先满足当地的排序限制,而且这正是我们所做的.
在上下文中执行操作的顺序可能与这些规则相冲突.例如,如果你这样做:
ctx.AddToProducts( new Product{ Name = "Bovril",Category = new Category {Name = "Food"} } );
效果是产品首先添加到(上下文),然后当我们走图时,我们添加类别.
即在上下文中的插入顺序是:
Product Category
但是由于引用完整性约束,我们必须重新排序,然后再尝试插入数据库:
Category Product
所以这种当地的重新排序是不可协商的.
但是,如果没有这样的本地依赖,您可以理论上保留排序.不幸的是,我们目前没有跟踪“什么时候”的内容,为了效率,我们不跟踪实体,以保持结构像列表.因此,我们目前无法保留无关插入的顺序.
不过,我们最近正在辩论这个问题,所以我很想看看这对你来说至关重要
希望这可以帮助
亚历克斯
项目经理实体框架小组