2011-12-27 63 views
0

每當我需要在L2S工作中執行多個查詢時,我都會使用TransactionScope顯式創建一個事務。今天,我的同事告訴我,他從來沒有手動創建交易,因爲L2S在SubmitChanges級別執行。我在說,所以我已經做了一些示例代碼來測試它。正如我所瞭解的那樣 - 他是對的。 我的問題是,從linq到sql的開頭是否可用,或者是在某些.net版本/服務包中添加的? 在網絡中,有很多關於如何在L2S上使用TransactionScope的示例,所以我不確定這些人中的每一個人都可能會錯過它?linq to sql:我需要顯式創建一個事務嗎?

+0

自早期beta版以來,L2S已創建SubmitChanges事務。這就是當發生異常時能夠回滾操作的能力(參見'SubmitChanges(ConflictMode.ContinueOnConflict)') – 2011-12-27 21:26:30

回答

0

顯式TransactionScopes確實有價值,如果你想包裝多個查詢和多個調用SaveChanges在一個單一的交易...但如果你正在保存一個對象圖(這將生成多個插入/更新語句到數據庫),當調用SaveChanges時,所有這些語句將自動包裝在一個事務中。

1

只要您進行所有更改,然後一次撥打SubmitChanges()即可自動創建交易。

您需要擔心TransactionScope的唯一時間是多次撥打SubmitChanges()或者您需要一個可在多個上下文中工作的事務。