在我的项目中,我在Migrations文件夹中有两个EF Core迁移文件。一个是初始版本("Initial"),其中包含许多
在第一个和第二个迁移之间,我通过调用
CreateTable
语句;另一个是更新后的版本("Cleanup"),只包含一些DropColumn
语句。在第一个和第二个迁移之间,我通过调用
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也想应用第一个迁移。 有没有选项可以指定数据库的基本版本? 我能做些什么来避免执行“Initial”迁移吗?
一个更一般的问题可能会帮助我了解发生了什么:EF Core如何确定基本版本,即必须执行哪些迁移?
__EFMigrationsHistory
,而MigrationId
应该与你的迁移名称匹配(例如 "20190410160507_LongRunningOperations")。 - SpruceMoose