В моих проектах у меня есть два файла миграции ядра EF в папке Migrations, которые я создал на основе начального выпуска и после обновления.Начальная миграция («Initial») содержит много операторов CreateTable
, тогда как вторая миграция («Cleanup») содержит только несколько операторов DropColumn
в их Up
методах.
Моя база данных была созданавызов context.Database.EnsureCreated()
между первой и второй миграцией, т.е. я бы хотел выполнить вторую миграцию.Однако, если я звоню dotnet ef database update Cleanup
, я получаю сообщение об ошибке:
Applying migration '20190409043916_Initial'.
Failed executing DbCommand (6ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [LongRunningOperations] (
[Id] bigint NOT NULL IDENTITY,
[Start] datetime2 NOT NULL,
[End] datetime2 NULL,
[Discriminator] nvarchar(max) NOT NULL,
CONSTRAINT [PK_LongRunningOperations] PRIMARY KEY ([Id])
);
System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'LongRunningOperations' in the database.
Очевидно, что EF также хочет применить первую миграцию.Есть ли возможность указать базовую версию базы данных?Могу ли я сделать что-то еще, чтобы избежать выполнения «начальной» миграции?
Более общий вопрос, который может помочь мне понять, что происходит: как EF Core определяет, что такое базовая версия, то есть какие миграции должны быть выполнены?казнят?