簡體   English   中英

不是Azure的遠程數據庫上的ReliableDbProvider連接

[英]ReliableDbProvider connections on remote database that is not Azure

我有使用ADO.NET與SQL Server數據庫進行交互的軟件。 我想使用DbProviderFactories來獲得工廠以建立連接,以減少與數據庫的耦合。

ConnectionStringSettings connectionStringEntry = ConfigurationManager.ConnectionStrings["Default"];
string providerName = connectionStringEntry.ProviderName;
DbProviderFactory factory = DbProviderFactories.GetFactory(providerName);
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = connectionStringEntry.ConnectionString;

等等...

我的SQL Server是遠程的,是到數據中心的不穩定的VPN連接。 它不是Azure服務器。 我確實遇到短暫故障。 我想使用EnterpriseLibrary.TransientFaultHandling幫助管理瞬態故障。 我沒有成功找到可以放入.config中的system.data/DbProviderFactories的DbProviderFactory。

我嘗試了ReliableDbProvider NuGet。 安裝軟件包之后,我按照示例在工廠中添加ReliableDbProvider.SqlAzure提供程序,然后更改我的連接字符串以使用它。

<system.data>
  <DbProviderFactories>
    <add name="Reliable Provider"
         invariant="ReliableDbProvider.SqlAzure"
         description="Reliable DB Provider for SQL Server"
         type="ReliableDbProvider.SqlAzure.SqlAzureProvider, ReliableDbProvider"/>
    <add name="Sql Azure Reliable Provider With Timeout Retries"
         invariant="ReliableDbProvider.SqlAzureWithTimeoutRetries"
         description="Reliable Db Provider for SQL Azure with Timeout Retries"
         type="ReliableDbProvider.SqlAzureWithTimeoutRetries.SqlAzureProvider, ReliableDbProvider" />
  </DbProviderFactories>
</system.data>

我希望我可以假設驅動程序名稱中的“ Azure”一詞並不是真的意味着它特定於Azure,而是可以用於任何SQL Server連接。 我不相信我可以做出這樣的假設。 當我在連接字符串中使用providerName ='ReliableDbProvider.SqlAzure'時,會立即收到信號量超時異常。 當我恢復到providerName ='System.Data.SqlClient'時,系統將按預期運行,直到出現瞬時傳輸異常。 我是否錯過了一些簡單的東西,讓我可以使用ReliableDbProvider,還是我必須實現一些更復雜的東西來處理瞬態故障並仍然使用DbProviderFactories?

我讓這太復雜了。 我閱讀了Entlib6手冊。 該庫提供了一個ReliableSqlConnection類。 我可以在需要IDbConnection的任何地方使用Connection成員。 我可以在依賴注入容器中將ReliableSqlConnection.Connection綁定到IDbConnection。 我真的不需要ReliableDbProvider來提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM