代码之家  ›  专栏  ›  技术社区  ›  Madhur Maurya

在C语言中使用TransactionScope和数据库#

  •  1
  • Madhur Maurya  · 技术社区  · 9 年前

    考虑下面给出的示例代码片段。

    当我不写入时,对数据库所做的更改是否会恢复 transaction.Complete(); 最后

       using (var transaction = new System.Transactions.TransactionScope())
        {
    
          var database = new DatabaseContext();
    
          var userA = database.Users.Find(1);
    
          var userB = database.Users.Find(2);
          userA.Name = "Admin";
    
          database.SaveChanges();
          userB.Age = 28;
          database.SaveChanges();
          transaction.Complete(); // Do changes done by database.saveChanges(); gets reverted if this statement is ommited ? 
    }
    

    提前谢谢。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Leandro Soares    9 年前

    是的。

    但你为什么需要它?在给定的示例中,一个简单的数据库上下文可以满足您的要求。

    如果你不打电话 database.SaveChanges() 下次数据库将在该特定位置打开新连接时,它将不包含旧数据。

    我对交易范围有点谨慎。。。

        2
  •  2
  •   user844705 user844705    9 年前

    从这里。。。

    // The Complete method commits the transaction. If an exception has been thrown,
            // Complete is not  called and the transaction is rolled back.
            scope.Complete();
    

    https://msdn.microsoft.com/en-us/library/ee818746%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396