ASP EF7 在迁移中设置列值
ASP EF7 Set column value in migration
我想从自动增量 ID 转移到复合主键。所以,这两个实体
public class SeasonTeam
{
public int SeasonTeamId { get; set; }
public int SeasonId { get; set; }
public int TeamId { get; set; }
}
public class GroupEntry
{
public int GroupEntryId { get; set; }
public int SeasonTeamId { get; set; }
public SeasonTeam SeasonTeam { get; set; }
}
现在看起来像这样
public class SeasonTeam
{
public int SeasonId { get; set; }
public int TeamId { get; set; }
}
public class GroupEntry
{
public int GroupEntryId { get; set; }
public int SeasonId { get; set; }
public int TeamId { get; set; }
public SeasonTeam SeasonTeam { get; set; }
}
Visual Studio 生成了迁移代码,但它损坏了数据。
migrationBuilder.AddColumn<int>(
name: "SeasonId",
table: "GroupEntry",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "TeamId",
table: "GroupEntry",
nullable: false,
defaultValue: 0);
migrationBuilder.DropForeignKey(name: "FK_GroupEntry_SeasonTeam_SeasonTeamId", table: "GroupEntry");
migrationBuilder.DropPrimaryKey(name: "PK_SeasonTeam", table: "SeasonTeam");
migrationBuilder.DropColumn(name: "SeasonTeamId", table: "SeasonTeam");
默认值 0 显然不起作用,我需要来自引用的 SeasonTeam table 的 ID,但我没有找到任何示例。在删除旧的主键列之前,如何为新的复合键设置正确的 ID 值?
您不能使用 EF 的 API 以编程方式执行此操作,但是,如果您可以编写 SQL 将值从一个 table 移动到另一个,则可以在之后添加自定义迁移步骤添加列操作和删除列操作之前。
migrationBuilder.Sql(@"INSERT INTO ...(your SQL here)");
根据你问题中的有限信息,我无法告诉你 SQL 应该是什么。
我想从自动增量 ID 转移到复合主键。所以,这两个实体
public class SeasonTeam
{
public int SeasonTeamId { get; set; }
public int SeasonId { get; set; }
public int TeamId { get; set; }
}
public class GroupEntry
{
public int GroupEntryId { get; set; }
public int SeasonTeamId { get; set; }
public SeasonTeam SeasonTeam { get; set; }
}
现在看起来像这样
public class SeasonTeam
{
public int SeasonId { get; set; }
public int TeamId { get; set; }
}
public class GroupEntry
{
public int GroupEntryId { get; set; }
public int SeasonId { get; set; }
public int TeamId { get; set; }
public SeasonTeam SeasonTeam { get; set; }
}
Visual Studio 生成了迁移代码,但它损坏了数据。
migrationBuilder.AddColumn<int>(
name: "SeasonId",
table: "GroupEntry",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<int>(
name: "TeamId",
table: "GroupEntry",
nullable: false,
defaultValue: 0);
migrationBuilder.DropForeignKey(name: "FK_GroupEntry_SeasonTeam_SeasonTeamId", table: "GroupEntry");
migrationBuilder.DropPrimaryKey(name: "PK_SeasonTeam", table: "SeasonTeam");
migrationBuilder.DropColumn(name: "SeasonTeamId", table: "SeasonTeam");
默认值 0 显然不起作用,我需要来自引用的 SeasonTeam table 的 ID,但我没有找到任何示例。在删除旧的主键列之前,如何为新的复合键设置正确的 ID 值?
您不能使用 EF 的 API 以编程方式执行此操作,但是,如果您可以编写 SQL 将值从一个 table 移动到另一个,则可以在之后添加自定义迁移步骤添加列操作和删除列操作之前。
migrationBuilder.Sql(@"INSERT INTO ...(your SQL here)");
根据你问题中的有限信息,我无法告诉你 SQL 应该是什么。