在transactioncope中使用存储过程

时间:2013-07-18 06:38:08

标签: c# sql-server-2005 stored-procedures transactions transactionscope

我在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 ...

1 个答案:

答案 0 :(得分:3)

“我应该”是主观的和上下文的(例如,它可能没有启用;或者您可能使用基于连接的交易;或者您可能不需要任何交易);但它肯定是一个可供你选择的选项。它是否“如下”取决于创建/打开连接的确切位置,因为连接只会在事务范围内自动登记,它们在事务范围内内部初始化。如果在myFunction内创建/打开连接,那么它应该可以工作(请注意:除非连接字符串Enlist显式设置为false)。