2010-09-06 2 views
2

может кто-то подтвердить или исправить меня, с моим пониманием использования POCO с Entity Framework v4?Является ли мое понимание POCO + Entity Framework v4, правильно?

Если мне захочется использовать POCO с моим контекстом EF4, мне все еще нужно разместить/создать ENTITIES на дизайнере/.edmx? Не идея использования POCO, поэтому мне не нужно использовать эти «тяжелые» сущности? или мне все еще нужны эти сущности, просто где-то еще я фактически перемещаю данные из сущностей и в свои POCO .., что является тем, что используется любым потребительским кодом?

ответ

5

Если вы хотите использовать ПОКО у вас есть три варианта:

первый выбор для создания EDMX модели. В EDMX вы отключите генерацию кода, чтобы модель не создавала для вас тяжелые объекты. Чем вы будете создавать свои классы POCO, которые должны следовать этим ограничениям:

  • Каждый класс должен иметь такое же имя, как сущности в модели
  • Каждый класс должен иметь конструктор без параметров. Должен быть открытым, но я думаю, что он также работает с защищенным.
  • Каждый класс должен иметь все свойства (включая навигационные свойства) с точно такими же именами, что и в модели. Все свойства, кроме навигационных коллекций, должны иметь геттер и сеттер (по крайней мере, защищенные).
  • Свойства навигационных коллекций должны быть, по меньшей мере, типом ICollection <T>, и вы должны их инициализировать (именно по этой причине они не нуждаются в настройщике). Это не относится к отслеживанию прокси-серверов, где EF инициализирует коллекцию.

Второй выбор аналогичен первому, но вы сами не создаете классы POCO. Вместо этого вы используете шаблон POCO, который можно загрузить в VS 2010. Этот шаблон использует .tt-файл для создания POCOs для вас.

Третий вариант заключается в использовании подхода Code First, в котором вы кодируете свои POCOs и определяете отображение в коде. Для этого вам нужно EF 4.0 Feature CTP. Я понимаю, что это единственный способ использования POCOs без модели EDMX. Но это только CTP с множеством ограничений на данный момент.

+0

Danke. Я боялся, что все еще должен был сделать эти кровавые сущности :( –

Смежные вопросы