2012-04-01 42 views
0

我有一个应用程序运行在ASP.NET MVC 3与实体框架代码优先。在开发过程中,我使用了一个SQL Compact数据库,但是在将它移动到我的虚拟服务器时,我试图定位SQL Express。无法找到请求的.Net Framework数据提供程序。它可能没有安装

最初有一些问题需要处理“CREATE DATABASE in master”错误,我通过将模型从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.] 

任何帮助,将不胜感激,因为这已被窃听我几天了!

感谢,

克里斯

回答

0

首先使用的代码的正常连接字符串。

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

谢谢@Eranga但是现在我的自定义初始化器中的context.Database.CompatibleWithModel(false)'调用返回false。我已将元数据表从开发数据库复制到服务器,并且表匹配。 – Chris 2012-04-01 13:16:36

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有自己的表和需要正确初始化的数据。如果那不匹配,你会得到类似的东西。

相关问题