通过Fluent API的EF核心外键

时间:2018-11-09 19:03:59

标签: c# entity-framework-core ef-core-2.0 ef-core-2.1

我有2个班级:

public class Item
{
    public int Id { get; set; }
    public string ItemName { get; set; }
}
public class ItemStats //inhenrit from Item
{        
    public int Id { get; set; }
    public int MaxEnhanceLevel { get; set; }

    public Item Item { get; set; }
}

这是一个TPT,但是由于不被支持,我不能使用继承。我知道如何使用数据注释来实现这一点

 [ForeignKey(nameof(Item))]
 public int Id { get; set; }

但是如何通过FluentAPI做到这一点?我不希望在Entitie类中使用数据注释。

1 个答案:

答案 0 :(得分:1)

您拥有的是One-to-onesingle navigation property,主体实体%和从属实体Item的{​​{3}}关系,即所谓的shared primary key association,实体PK也是主体的FK。

一对一关系的流畅API是ItemStatsHasOneWithOneHasForeignKey。请注意,此处的HasPrincipalKeyHasForeignKey的泛型类型参数(通常对于一对多关系会省略)很重要,因为它们可以标识哪个实体是主体,哪个是依赖的。

话虽如此,您的模型的流畅配置是:

HasPrincipalKey