【问题标题】:Optional relationship between two entities两个实体之间的可选关系
【发布时间】:2015-03-27 16:55:45
【问题描述】:

我有 2 张桌子:

网站:

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

    public virtual PersonDetail Person { get; set; }
}

人物详情:

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

一个网站不一定有一个人,一个人也不一定有一个网站。因此,这种关系在两端都是可选的。 我得到了错误:

无法确定之间关联的主体端 类型“站点”和“人员详细信息”。本协会的主体 必须使用关系流式 API 显式配置 或数据注释。

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

【问题讨论】:

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


    【解决方案1】:

    一对一关系中,一端必须是主体,而另一端必须是从属。覆盖 Context 类中的 OnModelCreating 方法并尝试以下操作:

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

    【讨论】:

    • 除非我弄错了,否则这可以在任一方向上完成并且只完成一次(不是在两个方向上定义)?
    • 欢迎您。正如@ErikPhilips 所说,它可能已在两个方向中的任何一个方向上定义,这取决于您的逻辑来决定谁是主体
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多