实体框架代码 首先自引用一对一 (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<Message>()
            .HasOptional(x => x.ParentMessage);
        modelBuilder.Entity<Message>()
            .HasOptional(x => x.ChildMessage);

但这没有用。

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

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

因此,经过一些认真的测试,这似乎确实是解决方案。

最新更新