我正在尝试使用 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 实体的列表。然而在实践中,父级只能拥有每种子级类型之一,尽管数据库结构并未强制执行这一点。有没有办法让我仍然可以使用单一导航属性?
试试这个:
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;}
}