实体框架:需要连接字符串中的"ProviderName" - 突然间?

esm*_*e68 13 .net entity-framework connection-string

我们已经在生产环境中使用Entity框架已经有好几个月了,而且昨天开始在使用我们的DbContext子类查询数据库时在某些机器上出现错误:

"应用程序配置文件中的连接字符串'MyConnectionString'不包含必需的providerName属性"

我们的问题很容易解决:我"providerName="System.Data.SqlClient"在所有已部署的服务器和工作站的配置文件中添加了连接字符串.

然而,这个谜团仍然存在:根据文件:

providerName属性是可选的,默认为"System.Data.SqlClient".

更为神秘的是为什么这种情况突然发生,显然只在某些机器上发生.我不知道最近EF或.NET版本,任何SQL Server版本或提供程序更改或任何更改.但我意识到必须有一些我忽略的东西.

.NET 4.5 EF 5.0

任何人都有任何提示或见解?

Jon*_*ams 11

某些驱动程序组合将导致计算机处于不明确的驱动程序应该使用的状态,因此它需要显式的提供程序名称.

可能是某些其他单独的应用程序或驱动程序安装,或运行的自动Windows Update.

明确提供者名称不会伤害任何东西.你可以添加它; 它只是连接字符串中的一些额外字符.它不会在将来或任何事情上需要改变.

您更新的声明应为:

<connectionStrings>
  <add
    name="MyConnectionStringName"
    connectionString="Connection string goes here"
    providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)