我使用的TransactionScope和DataContext的正确?(Am I using Tr

2019-09-29 10:55发布

如果我新的一些DataContexts,看了一些数据,然后只包裹的SubmitChanges在一个TransactionScope?

string conn1 = GetConn1();
string conn2 = GetConn2();
using (DataContext1 dc1 = new DataContext1(conn1))
{
  List<Customer> customers = ReadSomeData(dc1);
  ModifySomeCustomers(customers);  //performs local modification to Customer instances

  using (DataContext2 dc2 = new DataContext2(conn2))
  {
    List<Order> orders = ReadSomeData(dc2);
    ModifySomeOrders(orders); //performs local modification to Order instances

    using (TransactionScope scope = new TransactionScope())
    {
      dc1.SubmitChanges();
      dc2.SubmitChanges();
      scope.Complete();
    }
  }
}

第一个的SubmitChanges看涨预期来从池中的连接,并争取在作用域连接。 MS DTC已启用 - 第二的SubmitChanges看涨预期推动交易“分散”,取从池中的连接,并争取在作用域连接。

我担心ReadSomeData可能已经离开连接打开,这样的SubmitChanges不取从池中的连接,因此不会将在范围内的连接。

Answer 1:

SubmitChanges将参加TransactionScope

如果SubmitChanges发现一个环境事务它征募到该事务处理,否则它为的寿命创建事务本身SubmitChanges方法。

有一个MSDN文章关于在处理交易SubmitChanges



文章来源: Am I using TransactionScope and DataContext properly?