我在c#应用程序中执行存储过程,是否应该使用TransactionScope将其括起来,如下所示?
protected void rbl_SystemStatus_SelectedIndexChanged(object sender, EventArgs e)
{
using (TransactionScope scope = new TransactionScope())
{
AdminData.myFunction();
scope.Complete();
}
}
myFunction()在我的SQL Server数据库中执行存储过程,存储过程内容如下所示
UPDATE Table A SET...
UPDATE Table B SET ...
DELETE FROM Table C WHERE ...
答案 0 :(得分:3)
“我应该”是主观的和上下文的(例如,它可能没有启用;或者您可能使用基于连接的交易;或者您可能不需要任何交易);但它肯定是一个可供你选择的选项。它是否“如下”取决于创建/打开连接的确切位置,因为连接只会在事务范围内自动登记,它们在事务范围内内部初始化。如果在myFunction
内创建/打开连接,那么它应该可以工作(请注意:除非连接字符串Enlist
显式设置为false)。