1

有没有办法先在代码中实现事务而不必编写存储过程?

在某些情况下,需要先使用唯一的 guid 创建多表条目,然后才能创建最终表条目。这是我可以单独使用 EF 编码的东西吗?

4

1 回答 1

2

DbContext.SaveChanges()方法使用事务。所以它是原子的,你不想使用存储过程。unitOfWork 模式在 EF 本身中实现以实现此目的。
但是,假设您正在使用两个 DbContext 实例来处理您的工作,那么您需要使用这样的事务范围来包装您的工作,

using (var scpe=new TransactionScope()){
...
context1.SaveChanges();
....
context.SaveChanges();

scope.Complete();
}

SaveChanges 在事务中运行。如果任何脏 ObjectStateEntry 对象无法持久保存,SaveChanges 将回滚该事务并引发异常。

请参阅文档

于 2012-05-03T09:37:38.717 回答