EntityFramework Code首先自引用一对一(1:1)关系映射 – 无法确定主要结束

我有这堂课:

public class Message { public long Id { get; set; } public string Subject { get; set; } public string Message { get; set; } public virtual Message ParentMessage { get; set; } public virtual Message ChildMessage { get; set; } //... } 

使用EntityFramework Code First Add-Migration为我提供了以下消息: Unable to determine the principal end of an association between the types...

我不能使用[Required]属性,因为这个线程中的第一条消息没有父节点,线程中的最后一条消息将没有子节点…我该如何映射这个?

我试过了:

  modelBuilder.Entity() .HasOptional(x => x.ParentMessage); modelBuilder.Entity() .HasOptional(x => x.ChildMessage); 

但那没用。

如果有人能够validation这是正确的,我发现它看起来可能是它的东西:

  modelBuilder.Entity() .HasOptional(x => x.ParentMessage) .WithOptionalDependent(x => x.ChildMessage); 

经过一些严肃的测试后,这似乎确实是解决方案。