我在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="Data Source=.\SQLEXPRESS; Initial Catalog=LouiseClark; User ID=<username>; Password=<password>"" 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 :(得分: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有自己的表和数据需要正确初始化。如果那不匹配,你最终会得到类似的东西。