Сценарий миграции Entity Framework 7 (Beta7), создающий недопустимое имя таблицы

Когда я создаю сценарий миграции с помощью команд ef 7 powershell

dnx ef migrations add Initial -c MyDbContext
dnx ef migrations script -c MyDbContext

Я получаю сценарий, в первых нескольких строках которого следующее:

Using context 'MyDbContext'.
Generating up script for migration '20151001104737_Initial'.
IF OBJECT_ID(N'__MigrationHistory') IS NULL
    CREATE TABLE [__MigrationHistory] (
        [MigrationId] nvarchar(150) NOT NULL,
        [ProductVersion] nvarchar(32) NOT NULL,
        CONSTRAINT [PK_HistoryRow] PRIMARY KEY ([MigrationId])
    );

GO

Когда я запускаю скрипт в своих базах данных SQL, чтобы применить мою миграцию, я получаю сообщение об ошибке

Сообщение 102, уровень 15, состояние 1, строка 1 Неверный синтаксис рядом с «MyDbContext». Сообщение 208, уровень 16, состояние 1, строка 98. Недопустимое имя объекта «__MigrationHistory».

Я запускал этот сценарий в версиях 11, 12 и 13 базы данных SQL Server и везде получаю одну и ту же ошибку. Он явно жалуется, что имя таблицы __MigrationHistory, похоже, не является допустимым именем таблицы.


person Lutando    schedule 01.10.2015    source источник
comment
Наивное решение, но попробуйте CREATE TABLE [dbo].[__MigrationHistory]   -  person Lukasz Szozda    schedule 01.10.2015
comment
Спасибо, но это не работает. В остальном скрипт работает нормально. (все остальные таблицы создаются, кроме этой) Я хочу сказать, что это двойной префикс подчеркивания, но я сомневаюсь в этом.   -  person Lutando    schedule 01.10.2015


Ответы (1)


Разобрался с проблемой

Я передал команду ef в файл, и первые две строки — это просто описание того, что происходит во время выполнения команды.

поэтому, если вы делаете что-то вроде

dnx ef migrations script -c MyDbContext > myscript.sql 

затем обязательно удалите первые две строки перед запуском скрипта

person Lutando    schedule 01.10.2015
comment
Вы можете просто сделать dnx ef migrations script -c MyDbContext -o myscript.sql - person natemcmaster; 01.10.2015
comment
Это относится к проблеме #2883. Мы должны заставить работу конвейера/перенаправления. - person bricelam; 05.10.2015