使用 Entity Framework 使用 SQL Azure 進行瞬態故障處理
我目前在我的應用程序中使用 SQL Azure 和 Entity SQL。
例如
Entities model = new Entities(); db_Item item = model.db_Item.First();現在我想使用企業庫之外的瞬態故障處理,但是我找不到可以讓我執行諸如覆蓋實體類之類的範例或解決方案,因此我不必更新數百個程式碼的地方。
有人可以提供更多關於如何做到這一點的資訊嗎?
經歷我到目前為止所擁有的。
- 實體框架不提供對連接打開和將 SQL 發送到伺服器的部分的訪問權限,因此目前不可能圍繞該區域提供重試邏輯。
- EF 團隊意識到了這一不足,併計劃將重試邏輯實際集成到 EF 中,以實現版本 6。
- 根據 [1] 的案例 #3,您可以將 SQL 命令發送到 OnContextCreated 上的數據庫。然而,這意味著對於您對數據庫進行的每一次數據庫呼叫,您都必須進行 2 次。除非您不關心性能,否則我幾乎不建議在任何情況下這樣做。
- 到目前為止,唯一可行的選擇是以企業庫瞬態故障處理應用程序塊 [2] 的形式圍繞您對數據庫的每次呼叫實施重試邏輯。在現有的應用程序中,這是非常乏味的。
- 當我有時間時,我會進一步研究 EF 的原始碼,看看是否可以做進一步的事情,同時我們等待 EF 6。我會密切關注 [3]
- 一些希望,它目前正在由 EF 團隊審查。[4]
更新: 2013-11-14
只是想我會更新這篇文章,讓大家知道 EF6 已發布並支持開箱即用的連接彈性。<https://www.nuget.org/packages/EntityFramework/>
不再需要解決方法。
更新: 2013-03-23
EF 6 Alpha 3 與連接彈性一起發布 - <http://entityframework.codeplex.com/wikipage?title=Connection%20Resiliency%20Spec>
更新: 2012-11-04
EF 團隊已正式宣布計劃用於 EF 6。 [4]
[1] <http://blogs.msdn.com/b/appfabriccat/archive/2010/12/11/sql-azure-and-entity-framework-connection-fault-handling.aspx>
[2] <http://msdn.microsoft.com/en-us/library/hh680934(v=pandp.50).aspx>
[3] <http://entityframework.codeplex.com/wikipage?title=Roadmap>
[4] <http://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/2426525-automatically-perform-retry-logic-for-sql-azure>