Dot-Net

實體框架:突然需要連接字元串中的“ProviderName”?

  • September 17, 2018

我們已經在生產環境中使用實體框架好幾個月了,就在昨天使用我們的 DbContext 子類查詢數據庫時,一些機器上開始出現錯誤:

“應用程序配置文件中的連接字元串 ‘MyConnectionString’ 不包含所需的 providerName 屬性”

我們的問題很容易解決:我"providerName="System.Data.SqlClient"在所有部署的伺服器和工作站上的配置文件中添加了連接字元串。

然而,謎團仍然存在:根據文件

providerName 屬性是可選的,預設為“System.Data.SqlClient”。

更神秘的是為什麼會突然發生這種情況,而且顯然只在某些機器上發生。我不知道 EF 或 .NET 版本的任何最新更改、任何 SQL Server 版本或提供程序更改或任何內容。但我意識到必須有一些我忽略的東西。

.NET 4.5 英孚 5.0

有人有任何提示或見解嗎?

某些驅動程序組合會導致機器處於不明確應該使用哪個驅動程序的狀態,因此它需要一個明確的提供程序名稱。

可能是其他一些單獨的應用程序或驅動程序安裝,或執行的自動 Windows 更新。

但是,明確提供提供者名稱並不會造成任何傷害。您應該可以添加它;您的連接字元串中只有幾個額外的字元。它在未來永遠不需要改變或任何事情。

您更新後的聲明應為:

<connectionStrings>
 <add
   name="MyConnectionStringName"
   connectionString="Connection string goes here"
   providerName="System.Data.SqlClient" />
</connectionStrings>

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