这里的东西看起来很容易但是让我疯狂了几天......
我正在尝试使用Entity Framework和Sql Server Compact创建一个应用程序。 我想使用模型第一种方法。 我为模型创建了一个edmx文件并运行了Database Generation向导,该向导生成了一个包含Table Creation命令的edmx.sqlce文件。 但是在哪里运行这个edmx.sqlce文件?
我尝试通过将内容发送到SqlCommand的ExecuteNonQuery命令来运行该文件。但它也会产生语法错误 - 但为什么生成的edmx.sqlce文件会被破坏?我想我必须在其他地方运行该文件。 谁能告诉我在哪里? (我只有一个C#express版本)。
edmx.sqlce文件的内容是:
-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server Compact Edition
-- --------------------------------------------------
-- Date Created: 07/27/2011 23:50:28
-- Generated from EDMX file: C:\Users\Ralf\Programmierung\MySoftware\MySoftware\MySoftwareDatenbank\MySoftwareDataModel.edmx
-- --------------------------------------------------
-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- NOTE: if the constraint does not exist, an ignorable error will be reported.
-- --------------------------------------------------
-- --------------------------------------------------
-- Dropping existing tables
-- NOTE: if the table does not exist, an ignorable error will be reported.
-- --------------------------------------------------
DROP TABLE [DataSourceSet];
GO
-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------
-- Creating table 'DataSourceSet'
CREATE TABLE [DataSourceSet] (
[Id] int IDENTITY(1,1) NOT NULL
);
GO
-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------
-- Creating primary key on [Id] in table 'DataSourceSet'
ALTER TABLE [DataSourceSet]
ADD CONSTRAINT [PK_DataSourceSet]
PRIMARY KEY ([Id] );
GO
-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------
-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------
我的环境是: - SqlServerCompact 3.5 - Visual C#2010 Express
答案 0 :(得分:0)
您不必手动运行DDL脚本,它应该在您第一次在与所需数据库连接正确关联的代码中创建DbContext时自动完成。我对模型的熟悉程度与首先对代码不熟悉,但我理解EF 4.1可以更好地支持SQL Server CE。
如果由于某种原因,您仍希望通过ExecuteNonQuery手动执行DDL脚本,则需要删除所有批处理终结符(“GO”),因为ExecuteNonQuery不支持批处理查询。
答案 1 :(得分:0)
我猜测模型优先方法是SQL CE数据库的绊脚石。数据库shema更改和数据库体系结构存在太多问题。