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>

构建网站返回错误 Unable to find the requested .Net Framework Data Provider. It may not be installed.

我的 machine.config中没有自动关闭无论<DbProviderFactories/>我在 Visual Studio Web 主机本地运行网站还是在我的网络服务器的 IIS 上运行网站,都会发生同样的问题。我没有安装任何 NuGet 包

为什么我会收到此错误?

4

2 回答 2

9

对,我想通了这个问题。

您不能将该连接字符串用于 edmx 连接之外的任何其他内容。我在 web.config 中使用它的方式使网站也对会员资格使用相同的连接字符串,这与 System.Data.EntityClient 提供程序不兼容,在我的情况下需要 System.Data.Sqlclient。添加第二个连接字符串,减去其中的 Entity Framework 内容并让 web.config 中的成员资格提供程序属性引用该连接字符串会删除所有错误并允许页面呈现和从 SQL 服务器请求内容。

噩梦结束,可以回到我的网站上工作。o/

于 2013-06-21T09:01:27.930 回答
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>
于 2014-01-07T09:16:04.207 回答