Dot-Net
當我發出“SaveChanges()”時,Entity Framework 中的預設事務隔離級別是什麼?
當我發出“SaveChanges()”時,Entity Framework 中的預設事務隔離級別是什麼?我在任何地方都找不到它。它應該是“可序列化的”嗎?
SaveChanges使用DbTransaction目前商店提供者的實現。這意味著預設事務隔離級別設置為數據庫伺服器的預設值。在 SQL Server 中是READ COMMITTED. 如果要更改隔離級別,可以使用TransactionScope. 您還可以SaveChanges在派生上下文中覆蓋並base.SaveChanges()直接在覆蓋方法中包裝到範圍。public override void SaveChanges() { // Default isolation level for TransactionScope is Serializable using (var scope = new TransactionScope()) { base.SaveChanges(); scope.Complete(); } }您可以進一步改進此程式碼以允許您將隔離級別傳遞給
SaveChangesetc。一旦您開始更改隔離級別,您應該始終如一地執行此操作。這意味著您應該在每次要執行事務時定義隔離級別,因為隔離級別是為每個連接配置的,並且在使用連接池時會重用連接。編輯: EF6 中的預設事務級別已更改為
READ COMMITTED SNAPSHOT