一对一的反身关系ef核心

时间:2019-09-02 13:24:36

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

如何为一对一的反射关系ef核心建模。

我有这个模型,可以是相同类型模型的父模型或子模型。将其视为配偶关系。

一对一地在同一张桌子上。

我在考虑选项1:

int? parentId;
int? childId;

modelBuilder.Entity<ENTITY>()
                .HasOne(o => o.Parent)
                .WithOne(a => a.Child)
                .HasForeignKey<Document>(o => o.parentId)

modelBuilder.Entity<ENTITY>()
                .HasOne(o => o.Child)
                .WithOne(a => a.Parent)
                .HasForeignKey<ENTITY>(o => o.childId) 

或选项2:

int? relationId
bool parent
modelBuilder.Entity<ENTITY>()
               .HasOne(o => o.Relation)
               .WithOne(a => a.Relation)
               .HasForeignKey<ENTITY>(o => o.relationId) 

1 个答案:

答案 0 :(得分:1)

我认为2º选项是正确的。

 modelBuilder.Entity<ENTITY>()
        .HasOne<Relation>(e => e.Relation)
        .WithOne(r => r.Entity)
        .HasForeignKey<ENTITY>(r => r.relationId);

此链接可能有用。 https://www.entityframeworktutorial.net/efcore/configure-one-to-one-relationship-using-fluent-api-in-ef-core.aspx 希望对您有帮助!