Верно ли мое понимание POCO + Entity Framework v4? - PullRequest
2 голосов
/ 06 сентября 2010

Может ли кто-нибудь подтвердить / исправить меня, если я понимаю использование POCO с Entity Framework v4?

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

1 Ответ

5 голосов
/ 06 сентября 2010

Если вы хотите использовать POCO, у вас есть три варианта:

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

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

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

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

...