两个实体之间的可选关系

时间:2015-01-28 17:08:34

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

我有两张桌子:

网站:

public class Site
{
    public int Id { get; set; }

    public virtual PersonDetail Person { get; set; }
}

PersonDetail:

public class PersonDetail
{
    public int Id { get; set; }
    public virtual Site PbnSite { get; set; }
}

网站不一定有人,也不一定有网站。因此,两端的关系是可选的。 我收到错误:

  

无法确定之间关联的主要结束   类型'Site'和'PersonDetail'。这个协会的主要目的   必须使用关系fluent API显式配置   或数据注释。

尝试使用此架构更新数据库时。 我知道一个解决方案是根据需要设置其中一个但是看到它们都不是真的需要我自然会假设有一种方法来创建可选关系。

1 个答案:

答案 0 :(得分:3)

一对一关系中,一端必须主体,第二端必须依赖。覆盖Context类中的OnModelCreating方法并尝试:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<PersonDetail>()
    .HasOptional(p => p.PbnSite)
    .WithOptionalPrincipal(s => s.Person);
}