首先,我发现很多问题和许多答案相关或被认为与我的问题完全相同,但似乎没有什么对我有用。
我有一个全新的模板化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="data source=WEBSRV\SQLEXPRESS;initial catalog=Test;persist security info=True;user id=Test;password=Test#1337;multipleactiveresultsets=True;App=EntityFramework"" 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包
为什么我会收到此错误?
答案 0 :(得分:8)
是的,我想出了这个问题。
除了edmx连接之外,您不能将该连接字符串用于其他任何内容。 我在web.config中使用它的方式使得网站也使用相同的连接字符串作为成员资格的东西,这与System.Data.EntityClient提供程序不兼容,并且在我的情况下需要System.Data.Sqlclient。添加第二个连接字符串,减去其中的Entity Framework内容,并使用web.config中的成员资格提供程序属性引用该连接字符串,删除所有错误,并允许页面从SQL服务器呈现和请求内容。
噩梦结束,可以回到我的网站上班。 O /答案 1 :(得分:3)
这是错误类型的连接字符串。这是模型优先(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>