Entity Framework数据提供程序未找到,EntityClient。

6

首先,我发现很多问题和答案与我的问题相关或被认为是相同的,但似乎没有任何解决办法适用于我。

我有一个全新的模板化MVC4网站,在一个全新安装的sql server 2008 r2中有一个全新的数据库。 我在数据库上运行了aspnet_regsql,并创建了所有表 我创建了.edmx模型,该模型在我的web.config中生成了连接字符串。

<connectionStrings>
  <add name="TestEntities" connectionString="metadata=res://*/Models.Test.csdl|res://*/Models.Test.ssdl|res://*/Models.Test.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=WEBSRV\SQLEXPRESS;initial catalog=Test;persist security info=True;user id=Test;password=Test#1337;multipleactiveresultsets=True;App=EntityFramework&quot;"  providerName="System.Data.EntityClient" />
</connectionStrings>

构建网站时返回错误:无法找到所请求的 .Net Framework 数据提供程序。可能未安装。

在我的机器配置文件中没有自闭合的<DbProviderFactories/>。 无论我在 Visual Studio Web 主机上本地运行网站还是在我的 Web 服务器的 IIS 上运行,都会出现相同的问题。 我没有安装任何 NuGet 包。

为什么会出现这个错误?

2个回答

9

好的,我已经找出了问题所在。

你不能将那个连接字符串用于除edmx连接之外的任何其他事情。 我的web.config中的设置使网站也使用相同的连接字符串进行会员处理,这与System.Data.EntityClient提供程序不兼容,需要在我的情况下使用System.Data.Sqlclient。添加第二个连接字符串,去掉其中的Entity Framework内容,并在web.config中引用该连接字符串以被会员提供程序属性调用,可以消除所有错误,并允许页面从SQL服务器渲染和请求内容。

噩梦结束了,可以回到为网站工作的状态。 o/


1
你是对的,简单会员需要额外的连接。 - SUN Jiangong

4

你使用的连接字符串类型错误。这是针对模型优先(EDMX)类型连接的字符串。你需要一种代码优先的连接字符串。尝试使用标准的连接字符串,例如:

 <connectionStrings>
    <add name="MyDbContext" providerName="System.Data.SqlClient" connectionString="Data Source=(local);Initial Catalog=your_database;Integrated Security=True;Application Name=your_app_name" />
</connectionStrings>

1
非常感谢!这个答案对我帮助很大,实际上是在我尝试弄清楚为什么我的自定义MembershipProvider无法工作时(在MVC 4的WebSecurity /身份验证上下文中)帮了我很多忙。 - alex

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