Entity Framework 4.0: зачем использовать объекты EntityObject, сгенерированные кодом, над объектами POCO? - PullRequest
4 голосов
/ 13 января 2010

Помимо более быстрого времени разработки (Visual Studio 2010 beta 2 не имеет шаблонов T4 для создания объектов сущностей POCO, о которых я знаю), есть ли какие-либо преимущества в использовании традиционных сущностей EntityObject, которые Entity Framework создает по умолчанию? Если Microsoft предоставит шаблон T4 для создания объектов POCO, я пытаюсь выяснить, почему кто-то захочет использовать традиционный метод.

Ответы [ 2 ]

6 голосов
/ 13 января 2010

Кажется, вы задаете два вопроса одновременно. Только код по сравнению с моделью-первым и EntityObject родительским типом против произвольного родительского типа. Вы получаете поддержку дизайнера с моделью-первым, независимо от родительского типа. Помимо поддержки дизайнера, вы также можете использовать предварительно скомпилированные представления с моделью в первую очередь. Это может существенно помочь производительности.

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

Кроме того, в отличие от других ORM, в которых поддержка LINQ минимальна или отсутствует, Entity Framework имеет расширенную поддержку LINQ, что позволяет проецировать на реальные типы POCO. Следовательно, можно создавать действительно невежественные представления о постоянстве, не заботясь о том, каков базовый тип ваших сущностей. Вы не застряли с тем, какой тип выходит из черного ящика ORM.

EntityObject допускает частные свойства, которые сохраняются в базе данных. Использование типов прокси требует, чтобы эти свойства были как минимум защищены и были виртуальными. Следовательно, EntityObject может обеспечить лучшую инкапсуляцию.

Кстати, я не пытаюсь предположить, что использование прокси не дает никаких преимуществ; Я просто пытаюсь ответить на ваш вопрос о преимуществах EntityObject.

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

Я думаю, что единственным преимуществом является поддержка дизайнера. Не удается найти какие-либо другие преимущества при использовании не-поко-сущностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...