gpt4 book ai didi

.net - 回滚 .net 事务的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 22:16:51 29 4
gpt4 key购买 nike

这个问题与我的问题有关:SQL Server and TransactionScope (with MSDTC): Sporadically can't get connection

我正在使用 .net 进行一些事务编程 TransactionScope类(class)。如果我理解正确,我可以通过将 SQL 调用包装在 using ts as new TransactionScope() 中来在事务中执行一些 SQL 操作。阻止,或使用 new TransactionScope()然后 TransactionScope.Dispose()在末尾。

要提交事务,MSDN 说使用 TransactionScope.Commit() .假设我想在某些情况下回滚事务,只需调用TransactionScope.Dispose()就可以了不先调用 Commit 方法?这是好的做法,还是应该以其他方式完成?

最佳答案

如果您知道要回滚,则明确地执行此操作。你不能保证 Dispose 会回滚(在调用了 complete 的情况下,当你调用 Dispose 时事务会被提交)

对于您关于使用或新建/处置的问题,它们并不等同

using(var ts = new TransactionScope())
{
}

相当于
TransactionScope ts;
try
{
ts = new TransactionScope();
}
finally
{
ts.Dispose();
}

回答您的后续问题不,如果您调用 Dispose,您将不会让您的事务“徘徊”,它将提交或回滚。但是,如果您在编写它时使用 new/dispose(没有 finally 块),您可能会遇到一种情况,即当您期望它时(在异常情况下)不调用 dispose

关于.net - 回滚 .net 事务的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3085574/

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