在 transactionscope C# 中触发回滚
Triggering a rollback inside transactionscope C#
我目前正在开发一个存储过程,它将向数据库执行几次插入 table 我想测试一下它是否可以 return 中受影响的总行数我想要的方式。我正在从事务范围内的 C# .NET 代码调用此存储过程。
但是我的问题是,在执行存储过程并且受影响的行显示在控制台上后,如何触发回滚?
我不允许分享我的代码,但我可以给出它的伪代码,因为它很简单:
using(TransactionScope scope){
//Run the procedure and save the return value in a variable
int rowsAffected = MyStoredProcedure();
//Print the value in the variable
Console.WriteLine(rowsAffected);
//Ideally, I want to perform the rollback here.
scope.Complete();
}
简单地抛出某种异常就足够了吗?还是有更好的方法来触发回滚?
只要您不调用 'Complete',它就不会提交。删除它,当您离开范围的使用时它将回滚:
using(TransactionScope scope)
{
//Run the procedure and save the return value in a variable
int rowsAffected = MyStoredProcedure();
//Print the value in the variable
Console.WriteLine(rowsAffected);
//Don't call Complete() and it will be rollbacked
//scope.Complete();
}
因为您使用的是存储过程。为什么不将事务保存在存储过程本身中。那么您无需担心在 C# 代码中处理回滚
我目前正在开发一个存储过程,它将向数据库执行几次插入 table 我想测试一下它是否可以 return 中受影响的总行数我想要的方式。我正在从事务范围内的 C# .NET 代码调用此存储过程。
但是我的问题是,在执行存储过程并且受影响的行显示在控制台上后,如何触发回滚?
我不允许分享我的代码,但我可以给出它的伪代码,因为它很简单:
using(TransactionScope scope){
//Run the procedure and save the return value in a variable
int rowsAffected = MyStoredProcedure();
//Print the value in the variable
Console.WriteLine(rowsAffected);
//Ideally, I want to perform the rollback here.
scope.Complete();
}
简单地抛出某种异常就足够了吗?还是有更好的方法来触发回滚?
只要您不调用 'Complete',它就不会提交。删除它,当您离开范围的使用时它将回滚:
using(TransactionScope scope)
{
//Run the procedure and save the return value in a variable
int rowsAffected = MyStoredProcedure();
//Print the value in the variable
Console.WriteLine(rowsAffected);
//Don't call Complete() and it will be rollbacked
//scope.Complete();
}
因为您使用的是存储过程。为什么不将事务保存在存储过程本身中。那么您无需担心在 C# 代码中处理回滚