我不太熟悉有關EF,但我使用EF的一些基本功能。最近我收到了有關EF6交易的https://msdn.microsoft.com/en-us/data/dn456843.aspx。何時使用EF 6中的BeginTransaction? VS的SaveChanges
我用的SaveChanges()之前,因爲我知道它會在一個事務包裹的操作。但我注意到我的一些同事正在使用Database.BeginTransaction()。我搜索了一些東西並得到了以下結果,但我無法確認它是正確的。
是否SaveChanges()仍然可以正常工作,並且在SaveChanges無法滿足要求時使用BeginTransaction,比如在本文中的單個事務中包裝多個SaveChanges http://www.binaryintellect.net/articles/165bb877-27ee-4efa-9fa3-40cd0cf69e49.aspx?
而且在那個崗位,因爲DB環境是一樣的,我還可以添加兩個對象,並調用的SaveChanges()一次,這將正常工作呢?我猜如果我們正在處理多個數據庫上下文,那麼我們最好使用BeginTransaction在一個事務中處理多個SaveChanges()?
編輯:
下面是不正確的,如果我想有兩個另外一個事務?爲什麼?
public void CreateAnimals()
{
context.Set<Cat>.Add(new Dog());
context.Set<Cat>.Add(new Cat());
context.SaveChanges();
}
編輯2:
我的主要問題:當我們可以使用的SaveChanges(),當它是必須使用的BeginTransaction()?Database.BeginTransaction vs Transactions.TransactionScope沒有提到的SaveChanges
謝謝usr,解釋很清楚。但是我仍然想知道什麼時候應該使用BeginTransaction而不是SaveChanges,因爲SaveChanges也可以在一個事務中完成操作。 – woodwind
當您想要以原子方式執行多個SaveChanges,或者您希望執行與其他事務相同的事務時的讀取操作。 – usr