【发布时间】:2017-08-06 06:38:12
【问题描述】:
向我的一个表添加新的一对一关系后,我无法弄清楚如何为数据库中的现有行添加默认数据。
我的数据库在升级前基本上是这样的:
-- Team --
Name: TEXT
-- History --
Id: INT
... History 所在的位置具有从其他不相关的表中指向它的外键。
在我的升级中,我基本上希望一个团队有一个单一的历史,所以我的新数据库看起来像:
-- Team --
Name: TEXT
HistoryId: INT
-- History --
Id: INT
然而,我现在的问题是我的数据库中有现有的团队,他们需要有唯一的历史记录行来指向,所以我需要为每个现有的团队创建一个新的历史记录行。
我尝试在迁移中手动添加 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: "Id",
onDelete: ReferentialAction.Cascade);
}
【问题讨论】:
标签: c# ef-code-first .net-core entity-framework-core