Я только начинаю использовать Entity Framework 4 в первый раз. Пока мне это нравится, но я немного смущен тем, как правильно выполнять наследование.
Я использую подход, ориентированный на модель, и у меня есть сущность Person с двумя сущностями подтипа: Employee и Client. EF правильно использует подход таблицы для каждого типа, однако я не могу понять, как определить, к какому типу человека относится конкретный объект.
Например, если я делаю что-то вроде
var people = from p in entities.Person select p;
return people.ToList<Person>();
В моем списке, который я формирую из этого, все, что мне нужно, это поле Id, поэтому я не хочу на самом деле запрашивать все таблицы подтипов (это список веб-страниц со ссылками, поэтому все, что мне нужно, это имя и идентификатор, все в таблице Persons).
Однако я хочу сформировать разные списки, используя этот один запрос, по одному для каждого типа людей (поэтому один список для клиентов, а другой для сотрудников).
Проблема в том, что если у меня есть сущность Person, я не вижу никакого способа определить, является ли эта сущность клиентом или сотрудником, без прямого запроса таблиц Client или Employee. Как я могу легко определить подтип объекта, не выполняя кучу дополнительных запросов к базе данных?