Pos*_*sto 2 .net c# transactions
我的代码是这样的
try
{
using (TransactionScope iScope = new TransactionScope())
{
try
{
isInsertSuccess = InsertProfile(account);
}
catch (Exception ex)
{
throw;
}
if (isInsertSuccess)
{
iScope.Complete();
retValue = true;
}
}
}
catch (TransactionAbortedException tax)
{
throw;
}
catch (Exception ex)
{
throw;
}
Run Code Online (Sandbox Code Playgroud)
现在发生的是,即使我的值为TRUE,也会随机发生TransactionAbortedException异常,但是在DB中插入/更新数据.
知道出了什么问题吗?
Jef*_*nal 11
正如TransactionAbortedException文件所说,
当尝试提交事务并且事务中止时,也会抛出此异常.
这就是为什么即使在调用之后你也会看到异常Transaction.Complete:该Complete方法与以下内容不同Commit:
调用此方法[
TransactionScope.Complete]不保证事务的提交.它只是向交易经理通知您的状态的一种方式
在退出using语句之前,不会提交事务:CommittableTransaction.Commit有关详细信息,请参阅文档.此时,参与交易的任何行动都可以投票中止交易,您将得到一个TransactionAbortedException.
要调试底层问题,您需要分析异常详细信息和堆栈跟踪.正如Mark在评论中指出的那样,它可能是由死锁或与其他数据库进程的其他交互引起的.