我有这次迁移
migrationBuilder.Sql("UPDATE EmailMessages SET ReceiveDATE = getutcdate() WHERE ReceiveDate IS NULL");
migrationBuilder.RenameColumn(
name: "ReceiveDate",
table: "EmailMessages",
newName: "Date");
migrationBuilder.AlterColumn<DateTime>(
name: "Date",
table: "EmailMessages",
nullable: false);
首先这是有效的迁移吗?
我生成迁移脚本,并使用Azure SQL Database deployment
任务在Azure发布管道中运行它。此迁移来自一个多月前,突然间,在部署过程中开始出现错误。此迁移的迁移SQL部分如下所示:
IF NOT EXISTS(SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20200908131452_RefactorEmailDate')
BEGIN
UPDATE EmailMessages SET ReceiveDATE = getutcdate() WHERE ReceiveDate IS NULL
END;
GO
我检查了迁移历史记录表,由于存在记录,因此不应执行该表。我尝试在本地运行(记录也存在于迁移历史记录表中),令我惊讶的是它给出了错误。
第207级状态1的状态3的消息
无效的列名“ ReceiveDate”
因此,似乎该错误表明即使不执行该列也不存在(我甚至在BEGIN
之后添加了PRINT语句来确认这一点)。但是我可以根据需要执行多次迁移。它是按IF NOT EXISTS ... GO
批次进行组织的,除上述这一行之外,所有其他都运行良好。
我做错什么了吗?我是EF Core的新手。