Как выполнить первый файл DDL модели Entity Framework в базе данных SqlServer Compact? - PullRequest
5 голосов
/ 28 июля 2011

это то, что выглядит легко, но с ума сводит меня с незапамятных времен ...

Я пытаюсь создать приложение с Entity Framework и Sql Server Compact. Я хочу использовать модель первого подхода. Я создал файл edmx для модели и запустил мастер создания базы данных, который создал файл edmx.sqlce, содержащий команды создания таблицы. Но где запустить этот файл edmx.sqlce?

Я попытался запустить файл, отправив содержимое в команду ExecuteNonQuery команды SqlCommand. Но это также дает синтаксические ошибки - Но почему созданный файл edmx.sqlce должен быть поврежден ??? Я думаю, что мне нужно запустить файл в другом месте. Может кто-нибудь сказать мне, где? (У меня есть только C # экспресс-версия).

Содержимое файла 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 голосов
/ 16 августа 2015

Полагаю, что подход «Модель-первый» является камнем преткновения для базы данных SQL CE. Слишком много проблем с изменением схемы базы данных и архитектурой БД.

  1. Существует один инструмент для VS2010 <<a href="https://visualstudiogallery.msdn.microsoft.com/df3541c3-d833-4b65-b942-989e7ec74c87/" rel="nofollow"> Блок питания для создания базы данных Entity Designer > Однако он больше не поддерживается.
  2. Другое полезное расширение <<a href="https://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1" rel="nofollow"> SQL Server Compact / SQLite Toolbox > для VS 2010-2015 Существует встроенный редактор SQL, в котором вы можете попробовать запустить файл edmx.sqlce. Хотя, прежде чем запускать файл скрипта, вам нужно избавиться от GO и Изменить таблицу инструкции, чтобы он запустился
  3. Или вы можете использовать стороннее программное обеспечение, такое как Редактор базы данных SQL CE
0 голосов
/ 28 июля 2011

Вам не нужно запускать сценарий DDL вручную, это должно быть сделано автоматически для вас при первом создании DbContext в коде, который правильно связан с желаемым подключением к базе данных.Сначала я не настолько знаком с моделью, как сначала с кодом, но я понимаю, что SQL Server CE 4 лучше поддерживается в EF 4.1.

Если по какой-либо причине вы все еще хотите выполнить сценарий DDLвручную через ExecuteNonQuery необходимо удалить все терминаторы пакетов («GO»), поскольку ExecuteNonQuery не поддерживает пакетные запросы.

...