使用EntityFramework Core与Fluent API建立0..1到多个关系

时间:2016-09-02 21:49:26

标签: c# sqlite entity-framework-core ef-fluent-api

我需要使用Fluent API和EntityFramework Core声明一个0..1到多个关系。现在我有1对多的关系,我无法弄清楚如何将其改为0..1到很多。

modelBuilder.Entity<Item>()
      .HasOne(c => c.Constraint)
      .WithMany(p => p.Constraint)
      .HasForeignKey(p => p.Growid)
      .HasPrincipalKey(b => b.Growid);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

来自docs

  

如果您的实体类中有外键属性,则根据外键属性是必需还是可选来确定关系的必要性

Further information

  

如果属性包含null,则该属性被视为可选属性。如果null不是要分配给属性的有效值,则认为它是必需属性。

因此,为了将关系的性质从required(1到many)更改为0..1到many,您需要使外键可以为空。您可以在域实体中执行此操作:

DB::table('Brands')
    ->join('brand_tag','brands.id','=','brand_tag.brand_id')
    ->join('tags','brand_tag.tag_id','=','tags.id')
    ->whereIn('tags.id',$allTags)
    ->get();