Выберите базовый класс в Entity Framework - PullRequest
1 голос
/ 13 апреля 2010

Предположим, у меня есть

table Person
table Employee, which inherits Person.

Я хочу получить список лиц, независимо от того, является ли этот человек сотрудником или нет. Как получить сущностную платформу для этого без присоединения к таблице сотрудников C # это то, что я использую. Спасибо.

1 Ответ

0 голосов
/ 13 апреля 2010

Вам необходимо убедиться, что вы неявным образом не используете информацию из Employee.

Если вы сделаете это:

var people = Context.People.ToList();

... Тогда Entity Framework инициализирует новые экземпляры типа Employee для тех людей, которые оказываются сотрудниками. Это потому, что когда вы сохраняете Employee в базе данных, вы обычно ожидаете получить Employee обратно при выборе того же элемента.

Также, в этом отношении, вы не можете сказать Entity Framework дать вам Person, когда сохраненное значение равно Employee. Entity Framework никогда не вернет вам неправильный тип объекта.

Однако, если вы просто хотите прочитать одну таблицу, есть способ сделать это: выберите данные из Person в не-сущностные типы, такие как анонимный тип:

var people = Context.People.Select(p => new { Name = p.Name }).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...