2011-03-23 39 views
0

我必須在單個事務中將2條記錄插入到一​​個數據庫中,並將大約40條記錄插入到另一個數據庫中。我正在使用TransactionScope並獲取此錯誤。用於Oracle的Dotconnect - EF - 全局事務中的太多本地會話

我沒看過這篇文章,但這並沒有幫助,因爲有2分貝的參與,它是一個分佈式交易。

http://www.devart.com/blogs/dotconnect/index.php/entity-framework-tips-and-tricks-part-3.html

我的代碼是有點像下面。

using (var ts = new TransactionScope()) { 
    using (var context = new MyContext()) { 
     for (int i = 0; i < 40; i++) 
     { 
     var order = context.Orders.Where(a => a.name = 'xxx').Single(); 
     context.ArchiveOrders.Add(order); 
     } 
    } 
} 

即使我創造了「語境」我的外循環(不像在上面的鏈接的例子),代碼仍然失敗,出現「太多的本地會話」的錯誤。

此外,我注意到,每個查詢「context.Orders.Where(...)」被列爲新的交易。我正在使用Entity Framework而不是Linq to Sql。所以上面的代碼在20次迭代中斷裂。

除了讓他們獨立進行2個本地事務並以某種方式手動執行事務處理之外,我現在有哪些選擇。

回答

0

我們在我們的論壇已回覆您here。 解決方案是在循環之前添加context.Connection.Open();