回滚Sql Server 2008查询

时间:2015-02-01 06:03:27

标签: c# asp.net sql-server-2008 rollback

我使用两个存储过程将值插入到两个表中,并且两个表中的数据彼此链接,因此我想如果在第二个存储过程中发生任何错误,则通过第一个存储过程输入的数据应该得到回滚。

我使用Sql server 2008作为后端,ASP.net(c#)作为前端

2 个答案:

答案 0 :(得分:0)

使用需要使用TransactionScope,如下所示

using(var tran = new TransactionScope())
{
   //calling stored procedures here
   tran.Complete();
}

当发生异常时,控件将从使用中消失,因此transactionrollback

答案 1 :(得分:0)

如果您使用的是实体框架,则可以使用它。

using (var  dataContext = new SchoolMSDbContext())
{
  using (var trans = dataContext.Database.BeginTransaction(IsolationLevel.ReadCommitted))
  {
    try
    {
      // your query
      trans.Commit();
    }
    catch (Exception ex)
    {
      trans.Rollback();
      Console.WriteLine(ex.InnerException);
    }
  }
}

或者你可以试试这个

 using (var dataContext = new SchoolMSDbContext())
                {
                    using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                    {
                        try
                        {
                            //your query
                            transaction.Complete();

                        }
                        catch (Exception ex)
                        {
                            transaction.Dispose();
                            Console.WriteLine(ex.InnerException);
                        }
                    }
                }

为此你必须参考这个。

System.Transactions

有关更多信息,请查看此链接 https://msdn.microsoft.com/en-us/data/dn456843.aspx https://msdn.microsoft.com/en-us/library/2k2hy99x(v=vs.110).aspx