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