Dot-Net

使用 Entity Framework 使用 SQL Azure 進行瞬態故障處理

  • September 5, 2012

我目前在我的應用程序中使用 SQL Azure 和 Entity SQL。

例如

Entities model = new Entities();
db_Item item = model.db_Item.First();

現在我想使用企業庫之外的瞬態故障處理,但是我找不到可以讓我執行諸如覆蓋實體類之類的範例或解決方案,因此我不必更新數百個程式碼的地方。

有人可以提供更多關於如何做到這一點的資訊嗎?

經歷我到目前為止所擁有的。

  1. 實體框架不提供對連接打開和將 SQL 發送到伺服器的部分的訪問權限,因此目前不可能圍繞該區域提供重試邏輯。
  2. EF 團隊意識到了這一不足,併計劃將重試邏輯實際集成到 EF 中,以實現版本 6。
  3. 根據 [1] 的案例 #3,您可以將 SQL 命令發送到 OnContextCreated 上的數據庫。然而,這意味著對於您對數據庫進行的每一次數據庫呼叫,您都必須進行 2 次。除非您不關心性能,否則我幾乎不建議在任何情況下這樣做。
  4. 到目前為止,唯一可行的選擇是以企業庫瞬態故障處理應用程序塊 [2] 的形式圍繞您對數據庫的每次呼叫實施重試邏輯。在現有的應用程序中,這是非常乏味的。
  5. 當我有時間時,我會進一步研究 EF 的原始碼,看看是否可以做進一步的事情,同時我們等待 EF 6。我會密切關注 [3]
  6. 一些希望,它目前正在由 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>

引用自:https://stackoverflow.com/questions/12282427