应用程序配置文件中的连接字符串'MyConnection'不包含所需的providerName属性。

89
我将使用“Entity Framework Code First”进行编程,
我的连接字符串在配置文件中:
<connectionStrings>
    <clear/>
    <add name="ApplicationServices" connectionString="Data Source=PC-X;Initial Catalog=MYdb;Integrated Security=True"/>
  </connectionStrings>

当我尝试访问数据时(应该会创建数据库),出现以下错误信息:
连接字符串“ApplicationServices”在应用程序配置文件中不包含所需的providerName属性。
我错过了什么吗?
4个回答

191
假设您正在使用SQL,connectionString属性之后缺少以下代码:

providerName="System.Data.SqlClient"


19
如果使用 Entity Framework: providerName="System.Data.EntityClient"。 (注:这是提供程序名称的配置,用于指定 Entity Framework 数据提供程序。) - Dr1Ku
3
我试图将这个内容添加到连接字符串中,但实际上它是<add />元素的一个新属性。它是连接字符串属性的同级属性。 - Sean B
@IronMan84,我在使用SqlClient后遇到了类型转换错误,但是使用EntityClient就可以工作了。 - Zia Ul Rehman Mughal

16

在未来的某个时候,完整代码

<add name="YouContext" connectionString="Integrated Security=True;Persist Security Info=False;Initial Catalog=YourDatabaseName;Data Source=YourPCName;" providerName="System.Data.SqlClient"/>

2
在您的web.config文件中,找到providers标签。例如,这是我的providers语句:
<providers><provider invariantName="System.Data.SqlClient" ... /></providers>

你需要在连接字符串中添加System.Data.SqlClient作为提供程序名称,这样你的连接字符串应该像这样:

所以你的连接字符串应该看起来像这样:

  <connectionStrings>
 <add name="ApplicationServices" providerName="System.Data.SqlClient" connectionString="Data Source=PC-X;Initial Catalog=MYdb;Integrated Security=True"/>
  </connectionStrings>


+1 如果提到这是在 web.config 中,因为某些产品使用了数十个不同的配置文件。 - apoteet

0
在我的情况下,问题出在错误的启动项目目标上。在 PM 控制台中,目标迁移程序集项目是正确的。
我有一个多项目解决方案,目标在某个 Web 服务项目上。
因此,我将启动项更改为主要的网站项目,迁移已经完成,没有错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接