2010-04-06 2 views
5

Что нужно сделать, создав POCO с использованием шаблонов T4 в инфраструктуре сущностей 4.0? Почему поведение по умолчанию при использовании сущности framework 4.0 не для создания POCO?Entity framework POCO

ответ

3

Вы теряете много вещей. «Чистый» POCO ограничен в ORM, поскольку он не будет отслеживать изменения. Другими словами, когда вы мутируете объект и затем сохраняете изменения в контексте, вы хотите, чтобы измененные свойства сохранялись в базе данных. С помощью «чистого» POCO вы можете сделать это с отслеживанием изменений на основе моментальных снимков, что довольно неэффективно. Вы также можете сделать это с прокси-серверами времени выполнения, которые заставляют вас создавать свойства трека public virtual, поэтому у вас, возможно, нет «POCO». Кроме того, использование прокси означает, что вы не знаете истинный тип экземпляра экземпляра.

Вы также потеряете некоторые удобные свойства, такие как EntityState.

«Чистые» POCOs не могут выполнять ленивую загрузку. Опять же, вы можете обойти это с прокси-типами, но, опять же, если вы используете прокси, у вас действительно нет «чистого» POCO.

Помимо всего этого, в объектной структуре меньше необходимо использовать объекты POCO, чем в некоторых других ORM. Это связано с тем, что вы всегда можете проецировать типы объектов на экземпляры POCO с помощью LINQ, не создавая сначала экземпляры сущности. Таким образом, «чистые» POCO всегда доступны в приложении Entity Framework, даже если вам не удается сопоставить ваши сущности таким образом.

+0

Не могли бы вы прокомментировать модульное тестирование с помощью не POCO? – rkrauter

+1

Тестирование модулей с не-POCOs работает отлично. Никаких проблем для меня. –

+0

Спасибо за ответ! – rkrauter

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