EF 4 - Ленивая загрузка без прокси - PullRequest
13 голосов
/ 13 марта 2012

Я читал, что прокси используются, когда нужно использовать Lazy Loading и отслеживание изменений. Другими словами, чтобы использовать Lazy Loading, я должен включить прокси.

Пока все хорошо.

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

ctx = new SchoolEntities();
ctx.ContextOptions.ProxyCreationEnabled = false;
ctx.ContextOptions.LazyLoadingEnabled = true;

Связано ли свойство ProxyCreationEnabled только с прокси-сервером отслеживания изменений или я что-то упустил?

Может кто-нибудь объяснить это с некоторыми подробностями?

Спасибо!

EDIT1

Я не использую POCO / DbContext. Я использую обычную модель EDMX EF с ObjectContext. Я знаю важность прокси для сущностей POCO в отношении отслеживания изменений и отложенной загрузки. Зачем использовать прокси в обычной модели EDMX?

1 Ответ

11 голосов
/ 13 марта 2012

При использовании объектов POCO со встроенными функциями Entity Framework создание прокси-сервера должно быть разрешено для использования отложенной загрузки.Таким образом, для сущностей POCO, если ProxyCreationEnabled имеет значение false, тогда отложенная загрузка не произойдет, даже если для LazyLoadingEnabled установлено значение true.

С некоторыми типами устаревших объектов (особенно теми, которые являются производными от EntityObject), это не былорегистр и отложенная загрузка будут работать, даже если для ProxyCreationEnabled установлено значение false.Но не думайте, что это означает, что вы должны использовать сущности EntityObject - это причинит вам больше боли.

Флаг ProxyCreationEnabled обычно устанавливается в false, когда вы хотите убедиться, что EF никогда не создаст прокси, возможно,потому что это вызовет проблемы для типа сериализации, который вы делаете.

Флаг LazyLoadingEnabled обычно используется для контроля, происходит ли отложенная загрузка в контексте всего контекста, когда вы решили, что прокси в порядке.Так, например, вы можете использовать прокси для отслеживания изменений, но отключите отложенную загрузку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...