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

class Person;
class Employee : Person;

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

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

假设我有一个没有加载 ContacePerson 的 Company 实例。
如何加载 ContactPerson 以便它也加载 Employee 字段(如果需要)?

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

谢谢

最佳答案

您应该能够通过 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);

关于entity-framework - 转换为对 Entity Framework (TPT) 中的子类的属性引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3459334/

10-17 00:10