我有以下模型类:
public enum Roster
{
None,
One,
Two,
Three,
Four
}
[Index(nameof(UniColumn), IsUnique = true)]
internal class RowRosterEnum
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[EnumDataType(typeof(Roster))]
public Roster RosterEnum { get; set; }
public Roster UniColumn { get; set; }
}
internal class RowRoster
{
[Key]
[ForeignKey(nameof(RowRosterEnum))]
public Roster RId { get; set; }
public string? Name { get; set; }
public RowRosterEnum RowRosterEnum { get; set; }
}
字符串
当我创建迁移文件时,会生成以下代码:
migrationBuilder.CreateTable(
name: "TableRosterEnum",
columns: table => new
{
RosterEnum = table.Column<int>(type: "int", nullable: false),
UniColumn = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TableRosterEnum", x => x.RosterEnum);
});
migrationBuilder.CreateTable(
name: "TableRoster",
columns: table => new
{
RId = table.Column<int>(type: "int", nullable: false),
Name = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TableRoster", x => x.RId);
table.ForeignKey(
name: "FK_TableRoster_TableRosterEnum_RId",
column: x => x.RId,
principalTable: "TableRosterEnum",
principalColumn: "RosterEnum",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_TableRosterEnum_UniColumn",
table: "TableRosterEnum",
column: "UniColumn",
unique: true);
型
是否可以修改模型类,因此外键来自UniColumn而不是RosterEnum,基本上我希望像这样生成迁移代码:
principalColumn: "UniColumn",
型
我希望RosterEnum仍然是主键。
1条答案
按热度按时间cs7cruho1#
您可以尝试在DbContext类中定义关系,如下所示。
个字符
上下文
型
测试
的数据