c83*_*830 9 .net c# sql-server entity-framework entity-framework-4
我已经做了很多搜索,但找不到直接的anwser.
我有两个存储过程,它们都是导入到DBContext对象的函数
我想把它们放在交易中.(即如果InsertB()失败,则回滚InsertA())
我怎么做?我可以只声明一个TransactionScope对象并包装两个存储过程吗?
谢谢
Mar*_* N. 14
您需要在事务范围中登记您的操作,如下所示:
using(TransactionScope tranScope = new TransactionScope())
{
InsertA();
InsertB();
tranScope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
出错时,将自动回滚事务范围.当然,您仍然需要处理异常并执行您的异常处理设计所指示的任何内容(日志等).但除非您手动调用Complete(),否则在using作用域结束时回滚事务.
除非您在同一事务范围中打开其他数据库连接,否则事务范围不会提升为分布式事务(请参阅此处).
这一点很重要,因为否则您需要在此操作中涉及的所有服务器上配置MSDTC(Web,最终中间层,sql server).因此,只要交易不被提升为分布式交易,您就可以了.
注意:
为了微调您的事务选项,例如超时和隔离级别,请查看此TransactionScope构造函数.默认隔离级别是可序列化的.
附加示例: 此处.
| 归档时间: |
|
| 查看次数: |
9001 次 |
| 最近记录: |