0

這兩者之間有什麼區別,哪一個更受歡迎?使用更改對象狀態或Entry().stateObjectStateManager vs Entry()。狀態

db.ObjectStateManager.ChangeObjectState(employeeFromDB, EntityState.Modified) 

VS

context.Entry(employeeFromDB).State = EnitityState.Modified; 

回答

2

基本上,你在你的DbContext類的基本System.Data.Objects.ObjectStateManager上調用一個函數來更改屬性VS檢索和通過的DbContext直接改變它。

在第一個示例中,ChangeObjectState()只能用於修改上下文中已存在的實體的ObjectStateEntry。如果你試圖修改不存在的東西,你會得到一個異常。

入住ObjectStateManager.ChangeObjectState

例外。在第二個例子中,如果對象不將其添加上下文存在,你還是會得到一個異常,當你調用db.saveChanges()但是同樣的方法可以用來添加一個新的記錄只是通過改變EntityState.ModifiedEntityState.Added

您還需要從使用的DbContext抓住潛在的ObjectContext ((IObjectContextAdapter)context).ObjectContext