使用Entity Framework Core Fluent API映射具有不同名称的外键

时间:2016-11-12 14:42:32

标签: c# entity-framework entity-framework-core

我有一个名为ProductTypeId的外键属性的Product模型。但是,我没有ProductType模型。相反,我有一个TypeListItem模型。我想告诉EF,仍然可以在ProductTypeId表格中创建从IdTypeListItem的关系。

我想使用Entity Framework Core流畅的API来指定它,但无法弄清楚如何。我相信我曾经使用HasRequired,但我认为EF Core中没有。

以下是相关模型:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int ProductTypeId { get; set; }
}

public class TypeListItem
{
    public int Id { get; set; }
    public string Name { get; set; }
}

我相信我可能需要向TypeListItem模型添加Product的导航属性才能使其成为可能吗?

1 个答案:

答案 0 :(得分:0)

在EF Core中,即使没有导航属性也可以,因为HasXYZ / WithXYZ方法都有无参数重载(顺便说一下,而不是XYZRequired / XYZOptional ,EF Core使用XYZOne,可与IsRequired()结合使用。

模型的流畅配置就像现在一样:

modelBuilder.Entity<Product>()
    .HasOne<TypeListItem>()
    .WithMany()
    .HasForeignKey(e => e.ProductTypeId);