Entity framework 转换为实体框架(TPT)中对子类的属性引用

Entity framework 转换为实体框架(TPT)中对子类的属性引用,entity-framework,inheritance,table-per-type,Entity Framework,Inheritance,Table Per Type,我有以下计划:(不是真正的代码,只是为了得到想法) 类人; 员工类别:人; 阶级公司 { 公众人士联系人{…} 公共实体引用联系人引用{….} } Employee类型在数据库中有自己的表(每个类型的表继承) 假设我有一个没有加载ContacePerson的公司实例。 如何加载ContactPerson,以便它也加载员工字段(如果需要) 是否也有办法在所有公司中进行选择 谢谢您应该能够通过联系人的类型进行检查 if (company.ContactPerson is Employee)

我有以下计划:(不是真正的代码,只是为了得到想法)

类人;
员工类别:人;
阶级公司
{
公众人士联系人{…}
公共实体引用联系人引用{….}
}
Employee类型在数据库中有自己的表(每个类型的表继承)

假设我有一个没有加载ContacePerson的公司实例。 如何加载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);

我想知道同样的事情。加载公司时,如何加载所有人员,以便在该人员为员工时,也加载其他实体的所有员工引用属性?我知道Include(…)如何适用于不属于层次结构的具体类型,但当急于加载对层次结构的引用时,我对语法有点困惑,因为Include(“ContactPerson”)不会加载员工属性
if (company.ContactPerson is Employee)
    Console.Writeline("My badge Number is ", ((Employee)company.ContactPerson).BadgeNumber);