1
在ASP.NET Web API中使用OData的official guidance中,修改數據庫的示例都顯示爲包含競爭條件。例如,示例UpdateEntity
方法調用_context.Products.Any
後跟_context.SaveChanges
,但數據庫可能在調用之間發生了變化。OData在沒有競爭條件的ASP.NET Web API中的CRUD操作
這與Visual Studio爲帶有Entity Framework控制器的新Web API生成的樣板代碼不同,後者包含DbUpdateConcurrencyException
的捕獲塊。是否有類似的模式,是OData更新方法的最佳實踐?
此外,調用Any
後跟SaveChanges
涉及兩個數據庫往返行程。有沒有最好的做法,只有一個?
調用任何後跟SaveChanges不會消除競爭條件,它只會降低覆蓋數據的風險。我認爲你需要的是使用併發令牌。當您嘗試保存您的實體時,EF會拋出,但數據庫中的數據已經更改。看看這個msdn文章,瞭解更多詳情http://msdn.microsoft.com/en-us/library/vstudio/bb738618(v=vs.100).aspx。如果您使用的是DbContext,事情的工作方式也類似 – Pawel 2013-03-08 16:20:36