EF 6 - [一或零] 到 [一或零] 关系

问题描述 投票:0回答:1

我正在尝试使用 Entity Framework 6 为旧数据库结构创建数据模型。这是我的表格

class Parent
{
    [Key]
    public int Id {get; set;}
    public virtual Child1 Child1 {get; set;}
    public virtual Child2 Child2 {get; set;}
}

class Child1
{
    [Key]
    public int Id {get; set;}
    public int? ParentId {get; set;}
    public virtual Parent Parent {get; set;}
}

class Child2
{
    [Key]
    public int Id {get; set;}
    public int? ParentId {get; set;}
    public virtual Parent Parent {get; set;}
}

表 Child1 和 Child2 有一个引用父表的可为空的外键 ParentId。父级没有子级的外键,但我仍然希望它具有导航属性。我如何使用 EF6 实现这一目标,最好是使用数据注释?

编辑:问题似乎是旧的数据库结构支持一种可能性,例如多个 Child1 实体可能引用同一个 Parent,因此 Parent 应该有一个 Child1 和 Child2 实体的列表。然而在实践中,父级只能拥有每种子级类型之一,尽管数据库结构并未强制执行这一点。有没有办法让我仍然可以使用单一导航属性?

c# entity-framework entity-framework-6
1个回答
1
投票

试试这个:

   class Parent
{
    [Key]
    public int Id {get; set;}
    public virtual Child1 Child1 {get; set;}
    public virtual Child2 Child2 {get; set;}
}

class Child1
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    [ForeignKey("Parent")]
    public int ParentId {get; set;}
    ...
    public virtual Parent Parent {get; set;}
}

class Child2
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    [ForeignKey("Parent")]
    public int ParentId {get; set;}
    ...
    public virtual Parent Parent {get; set;}
}
© www.soinside.com 2019 - 2024. All rights reserved.