gpt4 book ai didi

c# - Entity Framework : How to put multiple stored procedures in a transaction?

转载 作者:太空狗 更新时间:2023-10-29 17:36:58 27 4
gpt4 key购买 nike

我已经做了很多搜索,但找不到直接的答案。

我有两个存储过程,它们都被函数导入到 DBContext 对象中

  1. 插入A()
  2. 插入B()

我想把它们放在一个事务中。 (即如果 InsertB() 失败,回滚 InsertA())

我该怎么做?我可以只声明一个 TransactionScope 对象并环绕两个存储过程吗?

谢谢

最佳答案

您需要在事务范围内登记您的操作,如下所示:

using(TransactionScope tranScope = new TransactionScope()) 
{
InsertA();
InsertB();

tranScope.Complete();
}

出错时,事务范围将自动回滚。当然,您仍然需要处理异常并执行您的异常处理设计规定的任何事情(日志等)。但是除非您手动调用 Complete(),否则事务会在 using 作用域结束时回滚。

除非您在同一事务范围内打开其他数据库连接,否则事务范围不会提升为分布式事务(参见 here )。

这是重要的了解,否则您需要配置 MSDTC在您参与此操作的所有服务器上(网络,最终中间层,sql server)。因此,只要事务未提升为分布式事务,就没有问题。

注意:为了微调您的事务选项,例如超时和隔离级别,请查看 this TransactionScope constructor .默认隔离级别是可序列化的。

附加示例: here .

关于c# - Entity Framework : How to put multiple stored procedures in a transaction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194143/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com