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

Self referencing / parent-child relationship one-to-zero or one in 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; }
}

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

entity.HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey( .... )

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

有人能帮帮我吗?

编辑:这个问题没有解决我的问题:Self referencing / parent-child relationship in Entity Framework 我的问题是关于创建外键。此行不起作用:

.HasForeignKey(x => x.ParentEntityId)

HasForeignKey 需要输入字符串。

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

modelBuilder.Entity<MyEntity>()
    .HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey<MyEntity>(c => c.ParentEntityId);