实体框架一对一可选关系

时间:2014-08-20 10:11:29

标签: entity-framework-6 one-to-one

我一直试图弄清楚如何在Entity Framework中创建一个到一个可选的关系,但我尝试的所有内容似乎都会导致异常或导航属性无法正常工作。任何人都可以解释如何注释下面的内容,这样两个对象都可以存在于数据库中,并且可以选择从一个链接到另一个链接吗?

非常感谢

public class ObjectA
{
    public int ID { get; set; }
    public virtual ObjectB ObjectB { get; set; }
}

public class ObjectB
{
    public int ID { get; set; }
    public virtual ObjectA ObjectA { get; set; }
    public int? ObjectAID { get; set; }

}

修改

使用代码,我得到以下异常:

An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code

Additional information: Unable to determine the principal end of an association between the types 'Namespace.ObjectA' and 'Namespace.ObjectB'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.

1 个答案:

答案 0 :(得分:0)

您需要选择哪个实体将成为主体,哪个实体将成为此关系中的依赖项。如果ObjectB是依赖的,那么您可以使用以下选项解决问题:

1)数据注释。使用ObjectB标记ObjectAID的{​​{1}}媒体资源:

RequiredAttribute

2) Fluent API 。配置模型构建器:

public class ObjectB
{
    public int ID { get; set; }
    public virtual ObjectA ObjectA { get; set; }
    [Required]
    public int? ObjectAID { get; set; }    
}