POCO-сущность - это просто сопоставленный класс. Модель в вашем вопросе означает отображение. Смысл сопоставления заключается в определении сопоставления между классом и таблицей базы данных, включая сопоставление между свойствами и столбцами. Таким образом, вы можете иметь разные имена свойств и столбцов, если они правильно настроены в отображении.
Таким образом, если вы используете файл EDMX (конструктор) для создания сопоставления, вы можете просто изменить имя свойства или объекта, и это будет отражено в созданном вами объекте POCO. Также файл EDMX будет корректно обновлять отображение. Если вы сначала используете код, вы должны вручную определить отображение либо с помощью аннотаций данных, либо через свободный API.
Сущность должна представлять единую структуру данных, сохраненную в базе данных. Из-за этого каждая таблица может быть отображена только один раз. Более того, разработчик EDMX требует, чтобы каждый необнуляемый столбец без значения по умолчанию был сопоставлен с сущностью. Генератор POCO не является инструментом для генерации ваших различных представлений данных. То, что вы ищете, называется проекцией. Есть способы, как включить отображенные проекции в файл EDMX (DefiningQuery
и QueryView
), но оба требуют ручного изменения файла EDMX, а первый также требует ручного обслуживания файла EDMX.
Если вам нужно удалить некоторые свойства из объекта просто для улучшения какого-либо запроса или если вам не нужны все данные для какой-либо операции, вы всегда можете использовать проекцию на анонимный или пользовательский класс непосредственно в запросе.
var query = from x in context.XEntities
select new XView
{
A = x.A,
B = x.B
};
Генератор POCO - это всего лишь инструмент для генерации классов для отображаемых объектов и проекций, но не для генерации всех связанных с данными классов, которые вам когда-либо понадобятся.