EF Core迁移问题-更新数据并重命名列

时间:2020-10-28 11:17:05

标签: sql-server entity-framework-core

我有这次迁移

  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的新手。

0 个答案:

没有答案