我使用EF4和.Net 4從一個文件中的一些XML加載到數據庫。
我有一個圍繞ObjectContext的類,並有方法將XML文件中的編組對象添加到代表我的表的各種EntityCollections中。
每個XML文件平均包含大約200,000個對象,包裝類在構造時創建ObjectContext並將引用存儲在本地私有類變量中,然後由方法使用該變量。
當我完成了創建實體我打電話:
entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
這是按設計的EntityFramework在服務器上創建一個事務。然而,即使在未添加到的表上,此事務也完全鎖定了我的數據庫。
我曾嘗試過各種東西,試圖避開這個包括包裝保存更改在這樣一個TransactionScope:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted }))
{
entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
transaction.Complete();
}
我也試圖在試圖影響底層創建的ObjectContext之前創建的TransactionScope在SaveChanges期間使用的交易。
理想情況下,我希望一次加載多個文件,但如果數據庫在保存更改期間被鎖定,則這是不可能的。
有沒有人知道解決這個問題?是否有迫使EntityFramework不使用交易?
感謝您提前提供任何幫助。
James
我認爲這裏的問題是你正在使用TransactionScopeOption.Supress。嘗試使用必需。 – 2013-03-18 23:56:41