微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决迁移状态使列可为空,但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 举报,一经查实,本站将立刻删除。