Asp.net core 如何使用EFCore代码优先迁移指定复合主键

Asp.net core 如何使用EFCore代码优先迁移指定复合主键,asp.net-core,entity-framework-migrations,composite-primary-key,asp.net-core-2.1,ef-core-2.1,Asp.net Core,Entity Framework Migrations,Composite Primary Key,Asp.net Core 2.1,Ef Core 2.1,我正在使用Asp.NETCore2.1、Mvc、c#、EF Core以及代码优先和迁移 我正在尝试构建一个表,该表在Migration.Up()方法中具有复合主键: migrationBuilder.CreateTable( 名称:“TagValueAttributes”, 列:表=>new{ TagValueID=table.Column(可空:false), 标识符=table.Column(nullable:false,unicode:true,maxLength:256), Value=

我正在使用Asp.NETCore2.1、Mvc、c#、EF Core以及代码优先和迁移

我正在尝试构建一个表,该表在
Migration.Up()
方法中具有复合主键:

migrationBuilder.CreateTable(
名称:“TagValueAttributes”,
列:表=>new{
TagValueID=table.Column(可空:false),
标识符=table.Column(nullable:false,unicode:true,maxLength:256),
Value=table.Column(可空:true,unicode:true,maxLength:2048)
},
约束:表=>{
表1.PrimaryKey(
名称:“PK_TagValueAttributes”,
专栏://这里是什么???
)
}
);
我不知道要为
约束
表.PrimaryKey()调用的
参数指定什么。我希望列
TagValueID
Identifier
构成复合键


我需要为
columns
参数指定什么?

为什么要将其放在
Migration.Up()
方法中

通过覆盖
OnModelCreating()
方法,您可以通过
DbContext
中的Fluent API执行此操作:

模型创建时受保护的覆盖无效(ModelBuilder)
{
builder.Entity().HasKey(t=>new{t.TagValueID,t.Identifier});
}
如果要将其保存在Migration.Up()中,请执行以下操作:

table.PrimaryKey(
名称:“PK_TagValueAttributes”,
列:t=>new{t.Identifier,t.TagValueID}
);

谢谢您的评论。但是,似乎没有名为
TagValueID
table
属性,没有名为
Identifier
的属性。我希望在
Migration.Up()
中使用该属性,因为我正在使用迁移。如果我把它放在
DbContext.OnModelCreating()
中,那么我就不会使用迁移了。嗯,好吧,我删除了答案的这一部分,我希望几分钟后会给你一个解决方案。你非常接近了。我会修正你的答案并接受它。几秒钟前我找到了解决办法。很高兴你的问题解决了祝你愉快。