相关疑难解决方法(0)

在EF Core中添加一对一关系时迁移数据?

在我的一个表中添加新的一对一关系后,我无法弄清楚如何为我的数据库中的现有行添加默认数据.

升级前我的数据库基本上看起来像这样:

-- Team --
  Name: TEXT

-- History --
  Id: INT
Run Code Online (Sandbox Code Playgroud)

...其中History有外键从其他不相关的表中指向它.

在我的升级中,我基本上希望团队有一个历史记录,所以我的新数据库看起来像:

-- Team --
  Name: TEXT
  HistoryId: INT

-- History --
  Id: INT
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,我的数据库中有现有的团队,他们需要指向唯一的历史记录行,因此我需要为每个现有团队创建一个新的历史记录行.

我尝试在迁移中手动添加Up方法中的条目,但由于我的模型与现有模式不匹配,因此失败.

protected override void Up(MigrationBuilder migrationBuilder)
{
    migrationBuilder.AddColumn<int>(
        name: "HistoryId",
        table: "Team",
        nullable: false,
        defaultValue: 0);

    using (var db = new XMDBContext())
    {
        foreach (var team in db.Team)
            team.History = new XMHistory();
        db.SaveChanges();
    }

    migrationBuilder.CreateIndex(
        name: "IX_Team_HistoryId",
        table: "Team",
        column: "HistoryId",
        unique: true);

    migrationBuilder.AddForeignKey(
        name: "FK_Team_History_HistoryId",
        table: "Team",
        column: "HistoryId",
        principalTable: "History",
        principalColumn: …
Run Code Online (Sandbox Code Playgroud)

c# ef-code-first entity-framework-core .net-core

7
推荐指数
1
解决办法
884
查看次数