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

时间:2010-08-11 14:23:20

标签: entity-framework inheritance table-per-type

我有以下方案:(不是真正的代码,只是为了得到这个想法)

class Person;
class Employee : Person;

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

员工类型在数据库中获得了自己的表(Table-per-Type继承)。

假设我没有加载ContacePerson的公司实例。 如何加载ContactPerson以便加载Employee字段(如果需要)?

有没有办法在选择所有公司时确定它?

由于

1 个答案:

答案 0 :(得分:0)

您应该只能通过ContactPerson的类型进行检查。

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

因此,如果Employee Class具有BadgeNumber的附加属性。您可以通过将Person转换为Employee来访问该属性。

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