迁移状态使列可为空,但update-database为此生成带有NOT NULL的sql

问题描述

我正在将EF核心与MVC一起使用。我只是将一列(类型为int)从非nullable(int)更改为nullable(int?)。该列用作外键。

喜欢

 [Column("TRIPCHARGES")]
 [ForeignKey("TripCharges")]
 int? TripChargesId { get; set; }

并按如下所示创建迁移(使用add-migration)。

using Microsoft.EntityFrameworkCore.Migrations;

namespace RailRoad.DataPersistenct.EFCore.Migrations
{
    public partial class MadeTripsRecordTripChargesIdnullable : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropForeignKey(
                name: "FK_TRIPSRECORD_TRIPCHARGES_TRIPCHARGES",table: "TRIPSRECORD");

            migrationBuilder.AlterColumn<int>(
                name: "TRIPCHARGES",table: "TRIPSRECORD",nullable: true,oldClrType: typeof(int),oldType: "int");

            migrationBuilder.AddForeignKey(
                name: "FK_TRIPSRECORD_TRIPCHARGES_TRIPCHARGES",column: "TRIPCHARGES",principalTable: "TRIPCHARGES",principalColumn: "TRIPCHARGES_ID",onDelete: ReferentialAction.Restrict);
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropForeignKey(
                name: "FK_TRIPSRECORD_TRIPCHARGES_TRIPCHARGES",type: "int",nullable: false,oldNullable: true);

            migrationBuilder.AddForeignKey(
                name: "FK_TRIPSRECORD_TRIPCHARGES_TRIPCHARGES",onDelete: ReferentialAction.Cascade);
        }
    }
}

但是当我运行命令update-database -v

我看到执行了以下sql:

Executing DbCommand [Parameters=[],CommandType='Text',CommandTimeout='30']
ALTER TABLE TRIPSRECORD MODIFY `TRIPCHARGES` int NOT NULL;
Executed DbCommand (1,209ms) [Parameters=[],CommandTimeout='30']
ALTER TABLE TRIPSRECORD MODIFY `TRIPCHARGES` int NOT NULL;
Creating DbCommand for 'ExecuteNonQuery'.

我还检查了表的数据库列定义,并且该列仍然具有非null约束。

我不知道这里出了什么问题,请帮忙。 提前致谢。 :)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...