Entity Framework POCO - PullRequest
       6

Entity Framework POCO

5 голосов
/ 06 апреля 2010

Что теряется при создании POCO с использованием шаблонов T4 в Entity Framework 4.0? Почему поведение по умолчанию при использовании Entity Framework 4.0 не для создания POCO?

1 Ответ

3 голосов
/ 06 апреля 2010

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

Вы также потеряете некоторые вспомогательные свойства, такие как EntityState.

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

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

...