在Entity Framework(TPT)中将属性引用强制转换为子类

4
我有如下方案:(并非真正的代码,仅用于理解)

我有如下方案:(并非真正的代码,仅用于理解)

class Person;
class Employee : Person;

class Company
{
    public Person ContactPerson { ...}
    public EntityReference<ContactPerson> ContactPersonReference {....}
}

雇员类型在数据库中有自己的表(表格继承)。

假设我有一个Company实例,但没有加载ContacePerson。如何加载ContactPerson以便根据需要同时加载Employee字段?

是否有一种方法可以在选择所有公司时确定它呢?

谢谢


我也想知道这个问题的答案。当加载公司时,如何急切地加载所有人员,以便如果该人员是员工,则还会加载到其他实体的所有员工引用属性?我知道如何使用Include(...)来处理不属于层次结构的具体类型,但是当急切地加载对层次结构的引用时,我对语法有些困惑,因为Include(“ContactPerson”)无法加载员工属性。 - Mahol25
1个回答

0

你只需要检查ContactPerson的类型即可。

if (company.ContactPerson is Employee)
     Console.WriteLine("I'm an Employee");
else
     Console.WriteLine("I'm a Person");

所以如果Employee类有一个额外的属性BadgeNumber。您可以通过将Person转换为Employee来访问该属性。

if (company.ContactPerson is Employee)
    Console.Writeline("My badge Number is ", ((Employee)company.ContactPerson).BadgeNumber);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接