Entity Framework Core 中的自引用/父子关系一对零或一对一

Cic*_*cio 4 one-to-one self-referencing-table entity-framework-core

我想在 Entity Framework Core 中创建一对零或一对一的引用/父子关系。我的意思是我的实体可以有一个父级:

public class MyEntity
{
    public Guid Id { get; set; }

    public Guid? ParentEntityId { get; set; }
    public MyEntity ParentEntity { get; set; }

    public MyEntity ChildEntity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过 Fluent api 配置它:

entity.HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey( .... )
Run Code Online (Sandbox Code Playgroud)

我不明白我必须在最后一行写什么。我也不确定我的实体是否正确。

有人可以帮我吗?

编辑:这个问题不能解决我的问题:实体框架中的自引用/父子关系 我的问题是关于创建外键。此行不起作用:

.HasForeignKey(x => x.ParentEntityId)
Run Code Online (Sandbox Code Playgroud)

HasForeignKey需要输入一个字符串。

Ger*_*old 5

在一对一关系中,您始终必须在调用中指定依赖实体类型HasForeignKey,即包含外键的实体。有关两个不同类之间有意义的一对一关系,请参阅标准 EF 示例。对于自我参考,很明显 EF 应该发现没有选择。不过,您必须指定类型:

modelBuilder.Entity<MyEntity>()
    .HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey<MyEntity>(c => c.ParentEntityId);
Run Code Online (Sandbox Code Playgroud)