我打开了一个Entity Framework事务,并在顺序链中处理多个insert-select-updates。 SaveChanges最后在UitOfWork上调用,但问题是,当调用SaveChanges时,"选择数据"查询的实体也会再次被插入到db中,从而导致DbUpdateException失败。
IUnitOfWorkTransaction transaction = unitOfWork.BeginTransaction();
using context1()
{
repository.(Insert into table 1)
repository.(Select data from table 2)
repository.(Select data from table 3)
repository.(Insert into table 4)
repository.(Update table 1 and table 2)
}
unitOfWork.SaveChanges();
正如我们所看到的,它在1个事务中使用顺序事件链,在单个dbcontext下使用所有存储库调用,但是当触发SaveChanges时,对于表(实体)抛出DbUpdateException,这是"只是" "选择数据"的一部分查询而不是插入/更新。 EF正在尝试插入/更新/删除该表中的数据,当它刚刚被查询并且未设置为插入时。
在设置正确保存所有更改的过程方面的任何帮助都非常感谢。