0
如果我新建一些DataContexts,讀取一些數據,然後只將SubmitChanges包裝到TransactionScope中,該怎麼辦?我正確使用TransactionScope和DataContext嗎?
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不會從池中獲取連接,因此也不會在範圍內徵用連接。
只是爲了澄清:你爲什麼使用兩個數據上下文?兩個數據庫? – Pleun 2012-07-27 19:06:58
@Pleun是的,兩個數據庫。 – 2012-07-27 19:16:05