48
我想知道用DBContext
實現交易的最佳方式是什麼。特別是,EF Code First DBContext and Transactions
- 是否
DbContext.SaveChanges
實現交易內部如果我改變多個實體? - 如果我想多次撥打
DbContext.SaveChanges
(同一個contxet /不同的contxets),如何實現交易?
我想知道用DBContext
實現交易的最佳方式是什麼。特別是,EF Code First DBContext and Transactions
DbContext.SaveChanges
實現交易內部如果我改變多個實體?DbContext.SaveChanges
(同一個contxet /不同的contxets),如何實現交易?SaveChanges
內部使用事務。TransactionScope
包裹多次調用SaveChanges
例子:
using(var scope = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
// Do something
context.SaveChanges();
// Do something else
context.SaveChanges();
scope.Complete();
}
一定要使用SQL 2008或更高版本的數據庫(或有MSDTC服務的客戶端上運行)。以前的版本會將事務升級爲第二個'SaveChanges'上的分佈式事務。這是由於'DbContext'如何在內部處理其連接的打開和關閉。 – Lukazoid 2012-01-19 15:51:46
是否可以從第一次保存更改中獲取身份?我總是看到Id = 0. – JarrettV 2012-01-24 17:11:03
@JarrettV - 我認爲你的問題是因爲IsolationLevel設置。降低它可能會有幫助... – Sunny 2012-03-12 17:00:39