如何在实体框架的复合主键的特定列的模型内部制作外键

时间:2019-04-17 04:17:00

标签: c# entity-framework entity-framework-core code-first ef-migrations

class1
{
    [key]
    public string id1 {get; set;}

    [Key]
    public string key2 {get; set;}
}

class2
{
    [foreignKey("class1")]
    public string class1Id{ get; set; }
}

现在在class2内,我只想将id1的{​​{1}}列用作外键。

该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您更喜欢数据注释,只需在导航属性上应用ForeignKey属性,并提供一个以逗号分隔的列表以及FK属性名称

 class1{
    [key]
    public string id1 {get; set;}

    [Key]
    public string key2 {get; set;}
    }

    class2{

    public string id1 { get; set;}

    public string key2 { get; set;}

      [ForeignKey("id1,key2")] // <= the composite FK
      public virtual class1 class1{ get; set; }

    }

使用流畅的API配置更容易理解,并且更不易出错:

modelBuilder.Entity< class2>()
    .HasRequired(e => e. class1) 
    .HasForeignKey(e => new { e.id1, e.key2 });