大約一年前我使用EF。我只是嘗試使用TransactionScope處理相當複雜的查詢,如下面的代碼。爲什麼Entity Framework 4.0需要使用DTM?有沒有可能不使用它?
using (var tran = new TransactionScope())
{
// Clear all data in some table
DataContext.SomeTables
.ForEach(x => DataContext.SomeTables.DeleteObject(x));
DataContext.SaveChanges();
// Import data from excel as DataSet object.
var ds = ImportDataFromExcel(file.FullName);
foreach (DataRow dr in ds.Tables[0].Rows)
{
DataContext.SomeTables.AddObject(new SomeTable
{
// fill object with data from current row.
});
}
DataContext.SaveChanges();
// Commit Transaction
tran.Complete();
}
之後,我得到了一些有關DTM的錯誤未啓用或無法訪問。我知道它是由數據庫服務器上的此服務引起的,不是由防火牆啓動或阻止的。但這不是我的觀點。
我想知道爲什麼EF使用此服務創建事務,而普通的SQL腳本只能使用像「BEGIN TRAN」,「SAVE TRAN」或「ROLLBACK TRAN」這樣的語句。
有沒有其他方法可以避免爲我非常簡單的事務處理語句調用DTM服務?
PS。目前的工作數據庫非常小,我認爲它不應該受到不同交易技術的影響。
感謝,