编程语言
首页 > 编程语言> > c# – EntityFramework代码首先自引用一对一(1:1)关系映射 – 无法确定主要结束

c# – EntityFramework代码首先自引用一对一(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为我提供了以下消息:无法确定类型之间关联的主要结束…

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

我试过了:

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

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

但那没用.

解决方法:

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

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

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

标签:c,entity-framework,entity-framework-5,self-reference
来源: https://codeday.me/bug/20190624/1281550.html