无法找到请求的.Net Framework数据提供程序。它可能没有安装

时间:2012-04-01 11:43:24

标签: sql asp.net-mvc-3 entity-framework-4.1 ef-code-first

我在ASP.NET MVC 3上运行了一个使用Entity Framework Code First的应用程序。在开发中我使用的是SQL Compact数据库,但是在将其移动到我的虚拟服务器时,我试图以SQL Express为目标。

最初有一个问题与“主数据库中的CREATE DATABASE”错误有关,我通过将SQL Compact数据库中的模型提取到SQL脚本并在服务器上执行该操作来创建数据库。

我创建了一个新的连接字符串,指向SQL Express实例,它使用EF格式:

<add name="LouiseClarkEntities" connectionString="metadata=res://*/Models.LouiseClark.csdl|res://*/Models.LouiseClark.ssdl|res://*/Models.LouiseClark.msl;provider=System.Data.EntityClient;provider connection string=&quot;Data Source=.\SQLEXPRESS; Initial Catalog=LouiseClark; User ID=<username>; Password=<password>&quot;" providerName="System.Data.EntityClient" />

导航到使用数据库的页面时,我现在得到的错误是:

Unable to find the requested .Net Framework Data Provider.  It may not be installed.

我已经在服务器上安装了Entity Framework 4.1,试着看看这是否可以解决问题,但它似乎并不是很好。

错误页面上的堆栈跟踪片段:

[ArgumentException: Unable to find the requested .Net Framework Data Provider.  It may not be installed.]
   System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +1420567
   System.Data.EntityClient.EntityConnection.GetFactory(String providerString) +35

[ArgumentException: The specified store provider cannot be found in the configuration, or is not valid.]

任何帮助都会受到赞赏,因为这已经困扰了我好几天了!

谢谢,

克里斯

2 个答案:

答案 0 :(得分:0)

首先使用普通连接字符串和代码。

<add name="LouiseClarkEntities" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=LouiseClark; User ID=<username>; Password=<password>" providerName="System.Data.SqlClient" />

答案 1 :(得分:0)

关于你的第二个问题,部分是第一个问题......

你做错了是which I got around by extracting the model from the SQL Compact database into an SQL script and executing that on the server to create the DB.

您应该使用迁移脚本 - 然后在PM控制台中使用Update-Database -Script来转储您需要的内容 - 然后将其部署到服务器数据库。

问题是CF有自己的表和数据需要正确初始化。如果那不匹配,你最终会得到类似的东西。