4
Я хочу, чтобы все контактные лица (в том числе лица -> Сотрудники)нагрузки навигации свойство от унаследованного класса
Contact
|<- Person
| |-> Employer
|
|<- Organization
| |-> Employees
Человек и организация наследует от Контакта.
Когда я использую FirstOrDefault, мои сотрудники и мой работодатель не были загружены.
public Contact GetContactById(int id)
{
var contact = GetContacts().FirstOrDefault(c => c.Id == id);
return contact;
}
private IQueryable<Contact> GetContacts()
{
var contacts = _contextProvider.Context.Contacts
.Include("Addresses");
return contacts;
}
Это мой текущий обходной путь:
public Contact GetContactById(int id)
{
var contact = GetContacts().FirstOrDefault(c => c.Id == id);
if (contact is Organization)
{
var organization = contact as Organization;
_contextProvider.Context.Entry(organization).Collection(o => o.Employees).Load();
}
else if (contact is Person)
{
var person = contact as Person;
_contextProvider.Context.Entry(person).Reference(o => o.Employer).Load();
}
return contact;
}
Есть ли лучший способ решить эту проблему?
что стратегия наследования - TPH, TPT, TPC? – Moho
Стратегия наследования - это TPT. – user2491336