我们已经在生产环境中使用Entity框架已经有好几个月了,而且在使用我们的DbContext子类查询数据库时,昨天开始在某些机器上出现错误:
“应用程序中的连接字符串'MyConnectionString' 配置文件不包含必需的providerName 属性“
我们的问题很容易解决:我将"providerName="System.Data.SqlClient"
添加到所有已部署的服务器和工作站上的配置文件中的连接字符串。
然而,谜仍然存在:根据the documentation:
providerName属性是可选的,默认值为 “System.Data.SqlClient的”。
更为神秘的是,为什么这种情况突然发生,显然只在某些机器上发生。我不知道最近EF或.NET版本,任何SQL Server版本或提供程序更改或任何更改。但我意识到必须有一些我忽略的东西。
.NET 4.5 EF 5.0
任何人都有任何提示或见解吗?
答案 0 :(得分:10)
某些驱动程序组合会导致计算机处于不明确的驱动程序应该使用的状态,因此需要显式的提供程序名称。
可能是其他一些单独的应用程序或驱动程序安装,或运行的自动Windows Update。
明确提供者名称不会伤害任何东西。你可以添加它;它只是连接字符串中的一些额外字符。它不会在将来或任何事情上改变。
您的更新声明应为:
<connectionStrings>
<add
name="MyConnectionStringName"
connectionString="Connection string goes here"
providerName="System.Data.SqlClient" />
</connectionStrings>
答案 1 :(得分:2)
您也可以使用:
providerName="System.Data.EntityClient"
然后:
<add name="name_here" connectionString="Data Source="pathofdatabase" providerName="System.Data.EntityClient" />