实体框架代码优先 - 多重可空关系?

时间:2014-11-16 04:43:43

标签: c# entity-framework entity-framework-6

代码:

public class A
{
    public virtual int Id { get; set; }

    public virtual Document Document { get; set; }
    public virtual int? DocumentId { get; set; }
}

public class B
{
    public virtual int Id { get; set; }

    public virtual Document Document { get; set; }
    public virtual int DocumentId { get; set; }
}

public class Document
{
    public virtual int Id { get; set; }

    public virtual string Data { get; set; }
}

文档是我从其他几个实体引用的实体类型。在实体A中,它是可选的,对于实体B,B需要存在。文档只会从单个A,B,C等类引用,并且不会被多个引用。

因此,Document表中的FK /字段AId和BId都应该可以为空。

我似乎无法正确配置,EF抱怨它无法解决关系的原则。

这是我迄今为止最好的尝试,但不起作用:

        modelBuilder.Entity<A>()
            .HasOptional(c => c.Document)
            .WithOptionalPrincipal();

        modelBuilder.Entity<B>()
            .HasRequired(t => t.Document)
            .WithRequiredPrincipal();

谢谢。

0 个答案:

没有答案