我正在使用具有代码优先和迁移功能的Asp.Net Core 2.1,Mvc,c#,EF Core。
我正在尝试建立一个在Migration.Up()
方法中具有复合主键的表:
migrationBuilder.CreateTable(
name: "TagValueAttributes",
columns: table => new {
TagValueID = table.Column<Int64>(nullable: false),
Identifier = table.Column<string>(nullable: false, unicode: true, maxLength: 256),
Value = table.Column<string>(nullable: true, unicode: true, maxLength: 2048)
},
constraints: table => {
table.PrimaryKey(
name: "PK_TagValueAttributes",
columns: // what goes here???
)
}
);
我不知道为columns
constraints
调用的table.PrimaryKey()
参数指定什么。我希望列TagValueID
和Identifier
形成组合键。
我需要为columns
参数指定什么?
答案 0 :(得分:2)
为什么要将它放在Migration.Up()
方法中?
您可以通过覆盖DbContext
方法通过OnModelCreating()
中的Fluent API来做到这一点:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<TagValueAttributes>().HasKey(t => new { t.TagValueID, t.Identifier };
}
如果您想将其保留在Migration.Up()
中,请执行以下操作:
table.PrimaryKey(
name: "PK_TagValueAttributes",
columns: t => new { t.Identifier, t.TagValueID }
);