Чем хорош POCO по отношению к EF4, nHiberate? - PullRequest
6 голосов
/ 23 октября 2011

Почему так важно поддерживать POCO в EF4, Linq2SQL или любых других технологиях отображения данных?Я понимаю концепцию POCO в смысле OO, но есть ли что-то еще, что я упускаю, когда дело доходит до ORM?

РЕДАКТИРОВАТЬ: я просто добавляю свое личное определение POCO в контексте ORM : это класс, который вручную кодируется разработчиком, а не класссгенерированный, дополненный или аннотированный инструментом отображения ORM (например, дизайнером Visual Studio EF4).

Пожалуйста, поправьте меня, если я ошибаюсь.

Ответы [ 3 ]

2 голосов
/ 23 октября 2011

«POCO» означает, что среда не накладывает ненужных или противоречащих интуиции ограничений на объекты-сущности - нет необходимости использовать генератор кода, нет необходимости расширять базовый класс, предоставляемый инфраструктурой, подробно аннотировать свойства или иметь необходимость для по большей части, пишите код, отличный от того, который вы бы использовали для классов, которые всегда хранятся в памяти. Это избавляет от необходимости сохранять данные вне классов модели и снижает когнитивные издержки.

Сравните определения POCO из NHibernate или EF Code First с кодом, который Visual Studio создает для EF без Code First, и спросите себя, какой из них вы предпочитаете читать и поддерживать. (Например, при поиске новой кодовой базы.)

2 голосов
/ 23 октября 2011

Обычно вы не хотите, чтобы ваш код зависел от определенной технологии ORM.POCOs минимизируют эту зависимость.Это всего лишь одно воплощение общего принципа развязки.

0 голосов
/ 23 октября 2011

Entity Framework позволяет вам использовать пользовательские классы данных вместе с вашей моделью данных, не внося никаких изменений в сами классы данных.

Это означает, что вы можете использовать «обычный старый»"Объекты CLR (POCO), такие как существующие объекты домена, с вашей моделью данных.Эти классы данных POCO, которые сопоставляются с сущностями, определенными в модели данных, поддерживают большую часть того же поведения запросов, вставки, обновления и удаления, что и типы сущностей, которые генерируются инструментами модели данных сущностей.

...