包括不适用于子类型 - EF Code First

时间:2017-08-31 09:24:22

标签: c# entity-framework ef-code-first entity-framework-6

我有一个班级"员工"我添加了以下字段:

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Required]
[MaxLength(50)]
public string LastName { get; set; }

[MaxLength(50)]
public string FirstName { get; set; }

我还有另外两个班级"高级"和"少年"我添加了以下字段:

[Key]
[ForeignKey("Employee")]
public int Id { get; set; }

[Required]
public Employee Employee { get; set; }

"小型"和"高级"每个都有特定的字段(除了在Employee中找到的公共字段)。

总之,"高级"和"少年"类与" Employee"共享相同的密钥。类。 在SQL中,Id字段(" Senior"" Junior"表)是主键和外键。

这个系统运作完美!

我的问题是:我希望能够从Employee的一个实例访问Junior(例如:employees [0] .Junior)

为此,我在Employee类中添加了以下字段:

[ForeignKey("Id")]
public Senior Senior { get; set; }

[ForeignKey("Id")]
public Junior Junior { get; set; }

使用Entity Framework,我得到所有员工:

var employees = _context.Employees.Include("Junior").Include("Senior").ToList();

问题是所有Junior和Senior字段都为null。 "包括"指示似乎不起作用。

1 个答案:

答案 0 :(得分:1)

您不需要ForeignKey属性,但您可能应该在另一个实体上拥有集合 - SeniorJunior应该有Employee的集合。如果您让它为您生成数据库,EF会自动计算出来。