有没有办法先在代码中实现事务而不必编写存储过程?
在某些情况下,需要先使用唯一的 guid 创建多表条目,然后才能创建最终表条目。这是我可以单独使用 EF 编码的东西吗?
有没有办法先在代码中实现事务而不必编写存储过程?
在某些情况下,需要先使用唯一的 guid 创建多表条目,然后才能创建最终表条目。这是我可以单独使用 EF 编码的东西吗?
DbContext.SaveChanges()
方法使用事务。所以它是原子的,你不想使用存储过程。unitOfWork 模式在 EF 本身中实现以实现此目的。
但是,假设您正在使用两个 DbContext 实例来处理您的工作,那么您需要使用这样的事务范围来包装您的工作,
using (var scpe=new TransactionScope()){
...
context1.SaveChanges();
....
context.SaveChanges();
scope.Complete();
}
SaveChanges 在事务中运行。如果任何脏 ObjectStateEntry 对象无法持久保存,SaveChanges 将回滚该事务并引发异常。