Если вы хотите использовать POCO, у вас есть три варианта:
Первый вариант - создать модель EDMX.В EDMX вы отключите генерацию кода, чтобы модель не создавала для вас тяжелые объекты.Затем вы создадите свои классы POCO, которые должны следовать следующим ограничениям:
- Каждый класс должен иметь то же имя, что и объект в модели
- Каждый класс должен иметь конструктор без параметров.Должно быть общедоступным, но я думаю, что оно также работает с защищенным.
- Каждый класс должен иметь все свойства (включая свойства навигации) с точно такими же именами, как в модели.Все свойства, кроме коллекций навигации, должны иметь методы получения и установки (по крайней мере, защищенные).
- Свойства для коллекций навигации должны соответствовать как минимум типу ICollection , и их нужно инициализировать (именно поэтомуим не нужен сеттер).Это не относится к отслеживанию прокси, когда EF инициализирует коллекцию.
Второй вариант такой же, как первый, но вы сами не создаете классы POCO.Вместо этого вы используете шаблон POCO, который можно загрузить в VS 2010. Этот шаблон использует файл .tt для генерации POCO для вас.
Третий вариант - использовать подход Code First, когда вы кодируете свои POCO и определяете отображение в коде,Для этого вам понадобится EF 4.0 Feature CTP .Я думаю, это единственный способ использовать POCO без модели EDMX.Но на данный момент это только ОСАГО со многими ограничениями.