0

當我對冗餘SQL配置(如SQL Azure)執行命令時,我有時會遇到超時和其他misc。由於服務器正在關閉或失敗而導致的錯誤。在Azure上,這不是問題,因爲冗餘是內置的。正確的操作是用新的連接重新嘗試查詢,並且很可能負載均衡器(或其他)會將您踢向正常工作的服務器。讓EF在各種錯誤後自動重新發送查詢

我的問題是是否有辦法讓Entity Framework(v4或v5)自動執行此操作?用try/catch塊封裝每個查詢(如果收到某些錯誤,則重新嘗試查詢)是不切實際的,我相信這個問題有一個解決方案,我可以忽略。

有關SQL Azure隨機關閉連接的相關信息,請參閱:http://msdn.microsoft.com/en-us/library/ee336245.aspx#cc。但是,到最近爲止,我從來沒有從Azure那裏得到這個錯誤......我偶然發現了偶爾的SQL超時。

回答

1

看看從SQL CAT瞬態故障處理框架:

http://windowsazurecat.com/2010/12/sql-azure-and-entity-framework-connection-fault-handling/

===通過@pbarranis ===

根據相同的網站,但不同的頁面添加:

瞬態故障處理框架已被更新的 取代,其可從&實踐團隊。它現在被稱爲 瞬時故障處理應用程序塊,並配備在所有3種口味:

•開發指導: http://msdn.microsoft.com/en-us/library/hh680934(v=PandP.50).aspx

•NuGet包: http://nuget.org/List/Packages/EnterpriseLibrary.WindowsAzure.TransientFaultHandling

•源代碼: http://nuget.org/List/Packages/EnterpriseLibrary.Source.WindowsAzure

新的瞬態故障處理應用程序塊現在是我們的 正式推薦的方法來處理trans運行在Windows Azure平臺上的 應用程序中的故障。

0

如果您使用實體框架6(目前在阿爾法)則是與Azure的SQL數據庫重試瞬時一些新的內置支持(與配置的一點點):http://entityframework.codeplex.com/wikipage?title=Connection%20Resiliency%20Spec

我已經創建了一個庫,允許您配置實體框架以使用故障處理模塊進行重試,而無需更改每個數據庫調用 - 通常您只需更改配置文件以及可能的一兩行代碼即可。

這使您可以將它用於Entity Framework或Linq To Sql。

https://github.com/robdmoore/ReliableDbProvider