如何从MySql EFCore中的2个外键制作主键

时间:2018-06-28 07:53:39

标签: mysql asp.net-core-2.0 ef-code-first-mapping

我在用2个前摄键制作主键时遇到了一些问题

模型示例:Element,Color,ElementToColor

ElementToColor应该包含2个表示元素和颜色关系的foregin键

[Key,Column(Order = 1)]
public Int ElementId {get; set;} 

[Key,Column(Order = 2)]
public Int ColorId {get; set;} 

但是当我尝试添加迁移失败

  

ElementToColor必须具有主键

但是为映射表的国王创建主键是错误的,它将复制数据

1,1,1

2,1,1

...

在那种情况下我该怎么办

我使用:

应用程序:asp.net核心2.1 webApi

数据库:MySql

ORM:MySql EFCore

1 个答案:

答案 0 :(得分:0)

找到它,我需要使用流畅的API:

在ApplicationDbContext中,我应该像这样重写方法OnModelCreating:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ElementToColor>().HasKey(e => new { e.ElementId, e.ColorId }
    );