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

时间:2013-11-07 00:41:25

标签: c# entity-framework entity-framework-5 self-reference

我有这堂课:

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<Message>()
            .HasOptional(x => x.ParentMessage);

        modelBuilder.Entity<Message>()
            .HasOptional(x => x.ChildMessage);

但这没效果。

1 个答案:

答案 0 :(得分:4)

如果有人可以确认这是正确的话,我发现了一些看起来可能是它的东西:

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

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