【问题标题】:C# cannot update database with Entity FrameworkC# 无法使用 Entity Framework 更新数据库
【发布时间】:2022-12-07 02:01:04
【问题描述】:

我有一个问题,不幸的是我无法修复它,也找不到合适的解决方案。 有谁知道问题出在哪里? 我正在尝试使用新的 TravelCountry 更新我的 Tours 对象。

迁移代码:

 migrationBuilder.DropColumn(
            name: "TravelCountry",
            table: "Tours");

        migrationBuilder.AddColumn<int>(
            name: "TravelCountryId",
            table: "Tours",
            type: "int",
            nullable: false,
            defaultValue: 0);

        migrationBuilder.CreateTable(
            name: "TravelCountries",
            columns: table => new
            {
                Id = table.Column<int>(type: "int", nullable: false)
                    .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
                Name = table.Column<string>(type: "longtext", nullable: false)
                    .Annotation("MySql:CharSet", "utf8mb4")
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_TravelCountries", x => x.Id);
            })
            .Annotation("MySql:CharSet", "utf8mb4");

        migrationBuilder.CreateIndex(
            name: "IX_Tours_TravelCountryId",
            table: "Tours",
            column: "TravelCountryId");

        migrationBuilder.AddForeignKey(
            name: "FK_Tours_TravelCountries_TravelCountryId",
            table: "Tours",
            column: "TravelCountryId",
            principalTable: "TravelCountries",
            principalColumn: "Id",
            onDelete: ReferentialAction.Cascade);

它在“migraitonBuilder.AddForeignKey”处失败并出现错误:

无法添加或更新子行:外键约束失败(gam_db.#sql-1e1c_fe,CONSTRAINT FK_Tours_TravelCountries_TravelCountryId FOREIGN KEY (TravelCountryId) REFERENCES travelcountries (Id) ON DELETE CASCADE)

这是我的 Tour 对象:

 public class Tour
{
    [Key]
    public int Id { get; set; }

    [Required]
    public TravelCountry? TravelCountry { get; set; }
}

这是我的 TravelCountry 对象:

 public class TravelCountry
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string? Name { get; set; }
}

【问题讨论】:

    标签: c# sql entity-framework entity-framework-core


    【解决方案1】:

    你需要在你的旅游模型中添加一个外键才能在这个 twp 表之间建立关系 例如:

    public int? CategoryId { get; set; }
        [ForeignKey("TravelCountryId")]
    

    还要确保你拥有所有的金块,并且在添加迁移后不要忘记控制台包管理器中的命令 update-database

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2020-02-13
      • 2020-08-05
      • 2016-05-16
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      相关资源
      最近更新 更多