如何在SqlServer Compact数据库上执行Entity Framework Model First DDL文件?

时间:2011-07-27 22:37:55

标签: sql-server entity-framework entity-framework-4

这里的东西看起来很容易但是让我疯狂了几天......

我正在尝试使用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

2 个答案:

答案 0 :(得分:0)

您不必手动运行DDL脚本,它应该在您第一次在与所需数据库连接正确关联的代码中创建DbContext时自动完成。我对模型的熟悉程度与首先对代码不熟悉,但我理解EF 4.1可以更好地支持SQL Server CE。

如果由于某种原因,您仍希望通过ExecuteNonQuery手动执行DDL脚本,则需要删除所有批处理终结符(“GO”),因为ExecuteNonQuery不支持批处理查询。

答案 1 :(得分:0)

我猜测模型优先方法是SQL CE数据库的绊脚石。数据库shema更改和数据库体系结构存在太多问题。

  1. VS2010有一个工具< Entity Designer Database Generation Power Pack>但是不再支持它。
  2. 另一个有用的扩展名< SQL Server Compact/SQLite Toolbox> for VS 2010-2015有内置的sql编辑器,你可以尝试运行edmx.sqlce文件。虽然在运行脚本文件之前,您需要删除 GO Alter table 指令以使其运行
  3. 或者您可以使用第三方软件,例如 SQL CE数据库编辑器