Linq to sql 我是否正确使用TransactionScope和DataContext?

Linq to sql 我是否正确使用TransactionScope和DataContext?,linq-to-sql,transactionscope,msdtc,Linq To Sql,Transactionscope,Msdtc,如果我新建一些DataContext,读取一些数据,然后只将提交的更改包装在TransactionScope中,会怎么样 string conn1 = GetConn1(); string conn2 = GetConn2(); using (DataContext1 dc1 = new DataContext1(conn1)) { List<Customer> customers = ReadSomeData(dc1); ModifySomeCustomers(custom

如果我新建一些DataContext,读取一些数据,然后只将提交的更改包装在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();
    }
  }
}
string conn1=GetConn1();
字符串conn2=GetConn2();
使用(DataContext1 dc1=新DataContext1(conn1))
{
列出客户=ReadSomeData(dc1);
ModifySomeCustomers(customers);//对客户实例执行本地修改
使用(DataContext2 dc2=新DataContext2(conn2))
{
列表顺序=ReadSomeData(dc2);
ModifySomeOrders(orders);//对订单实例执行本地修改
使用(TransactionScope范围=新TransactionScope())
{
dc1.提交更改();
dc2.提交更改();
scope.Complete();
}
}
}
第一个SubmitChanges调用将从池中获取连接并在作用域中登记该连接。 MS DTC已启用-第二个SubmitChanges调用预期将事务升级为“分布式”,从池中获取连接并在作用域中登记该连接


我担心ReadSomeData可能使连接保持打开状态,因此SubmitChanges不会从池中获取连接,因此不会在作用域中登记该连接。

SubmitChanges
将参与
TransactionScope

如果
SubmitChanges
找到它登记到该事务的环境事务,否则它将在
SubmitChanges
方法的生存期内创建一个事务本身


SubmitChanges

中有一个关于事务处理的例子,只是想澄清一下:为什么要使用两个DataContext?两个数据库?