我正在运行VS 2010 SP1(beta),并安装了VS 2010 Tools for SQL Compact 4.0。我可以从服务器资源管理器中创建SQL Compact 4.0数据连接。只有在“生成数据库向导”中不出现4.0选项。顺便说一下,我的SQL Compact 4.0安装包中包含了“System.Data.SqlServerCe.Entity.dll”,所以我应该拥有需要的SQL Compact组件。
我是做错了什么,还是这是一个错误?有人有解决方法或解决办法吗?谢谢您的帮助。
我正在运行VS 2010 SP1(beta),并安装了VS 2010 Tools for SQL Compact 4.0。我可以从服务器资源管理器中创建SQL Compact 4.0数据连接。只有在“生成数据库向导”中不出现4.0选项。顺便说一下,我的SQL Compact 4.0安装包中包含了“System.Data.SqlServerCe.Entity.dll”,所以我应该拥有需要的SQL Compact组件。
我是做错了什么,还是这是一个错误?有人有解决方法或解决办法吗?谢谢您的帮助。
为了解决问题,我使用 生成数据库向导 生成一个 SQL Compact 3.5 脚本,并将其运行在在 VS 2010 Solution Explorer 创建的空 SQL Compact 4.0 数据库中。以下是完成此任务的步骤:
步骤1: 运行 生成数据库向导。第一页会提示创建文件,因此请让其创建一个 SQL Compact 3.5 文件。这个文件是虚拟的,所以名称无关紧要。
步骤2: 完成向导以创建将配置新数据库的 DDL 脚本。
步骤3: 删除步骤1创建的虚拟文件。
步骤4: 使用 VS 2010 的 Server Explorer 创建实际的 SQL Compact 4.0 文件,您将在项目中使用该文件。
步骤5: 生成数据库向导 在 EDMX 文件中放置了两个对 SQL Compact "3.5" 的引用;这些引用需要更改为 "4.0"。在 VS 2010 的 XML 编辑器中打开 EDMX 文件(右键单击并选择“打开方式”即可进入 XML 编辑器)。第7行应包含 "3.5" 引用。将它们更改为 "4.0" 并保存文件。
步骤6: 在 VS 2010 中打开生成的 EDMX.SQLCE 脚本文件。VS 将通过工作窗格底部的横幅指示(脚本已断开连接)。在横幅上方的空白处右键单击,并在出现的上下文菜单中选择 连接 > 连接。这将带来一个连接对话框——使用它将脚本连接到您在步骤4中创建的 SQL Compact 4.0 数据库中。
第七步: 再次右键单击脚本空白处,从上下文菜单中选择执行SQL。脚本将被执行,并在脚本下方的窗格中得到通常的结果消息。假设执行成功,则数据库已配置为匹配实体数据模型。
第八步: 我们还需要确保App.config/web.config没有指向虚拟文件。如果是,请将其更改为在上述第4步中创建的实际CE 4.0文件。否则,在我们对模型进行更改时,就会出现重新生成脚本的问题。在配置文件中也将3.5更改为4.0。
此时,您应该能够使用Entity Framework 4来处理您的数据库。
回答以下评论并根据它们进行解释:
这些向导不起作用。
在Visual Studio 2010 SP1 Beta的VB或C# Windows项目中的设计师:以下向导在Windows项目系统中与Compact 4.0不兼容。开发人员可以手动添加对Compact 4.0的ADO.NET提供程序(System.Data.SqlServerCe)的引用,以开发适用于Compact 4.0的程序:
您可以使用IDatabaseInitializer并在代码中创建数据库
if (File.Exists("Test.sdf"))
File.Delete("Test.sdf");
string connStr = "Data Source = Test.sdf; Password = <password>";
SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();
SqlCeConnection conn = null;
try {
conn = new SqlCeConnection(connStr);
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "CREATE TABLE myTable (col1 int, col2 ntext)";
cmd.ExecuteNonQuery();
catch {
finally {
conn.Close();
http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceengine(v=vs.80).aspx
编辑:
我找到了这个workaround。
我可以在我的Chinook.Data项目中顺利运行“生成数据库向导”,请确保您的app.config文件中有正确的连接字符串。http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="ChinookEntities" connectionString="metadata=res://*/ChinookModel.csdl|res://*/ChinookModel.ssdl|res://*/ChinookModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=C:\projects\Chinook\Chinook40.sdf"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
如果在安装Visual Studio 2010 SP1时未直接安装,则可能需要安装SQL Server Compact 4工具。当我遇到这个问题时,这是对我有效的解决方法。