Помимо быстрого времени разработки (у Visual Studio 2010 бета 2 нет шаблонов T4 для создания объектов сущности POCO, о которых я знаю), есть ли какие-либо преимущества в использовании традиционных объектов EntityObject, которые Entity Framework создает по умолчанию? Если Microsoft поставляет шаблон T4 для создания объектов POCO, я пытаюсь понять, почему кто-то захочет использовать традиционный метод.Entity Framework 4.0: зачем использовать созданные с помощью кода объекты EntityObject над объектами POCO?
ответ
Вы задаете два вопроса одновременно, похоже. Код только для модели - первый и EntityObject
- тип родителя по сравнению с произвольным родительским типом. Вы получаете поддержку дизайнера с первой моделью, независимо от типа родителя. Помимо поддержки дизайнера, вы также можете использовать предварительно скомпилированные представления с первой моделью. Это может значительно повысить производительность.
Наличие EntityObject
в качестве родителя может быть преимуществом по сравнению с так называемыми «POCOs» (обычно это прокси-базы, а не «простые» объекты), поскольку тип выполнения ваших сущностей - это точный тип, который вы ожидаете, а не подтип, генерируемый во время выполнения.
Кроме того, в отличие от других ORMs, которые имеют минимальное нет поддержки LINQ, то Entity Framework имеет богатую поддержку LINQ, что позволяет вам project на реального типов POCO. Таким образом, можно создавать по-настоящему упорные презентации, не заботясь о том, что такое базовый тип ваших сущностей. Вы не зацикливаетесь на том, какой тип выходит из черного ящика ORM.
EntityObject
позволяет использовать частные объекты, которые сохраняются в базе данных. Использование типов прокси требует, чтобы эти свойства были, по крайней мере, защищены и должны быть виртуальными. Поэтому EntityObject
может обеспечить лучшую инкапсуляцию.
Я не пытаюсь предложить, кстати, что нет преимуществ при использовании прокси; Я просто пытаюсь ответить на ваш вопрос о преимуществах EntityObject
.
Я думаю, что единственное преимущество - поддержка дизайнеров. Невозможно найти другие преимущества при использовании объектов non-poco.
Хорошая точка. Я хотел бы думать, что если создаются шаблоны, Microsoft может добавить возможность изменять объекты POCO у дизайнера. – senfo