Отложенная загрузка объекта POCO с прокси-сервера

#entity-framework-4 #lazy-loading

#entity-framework-4 #отложенная загрузка

Вопрос:

Я пытаюсь создать прокси-сервер POCO для объекта, о котором уже известно, что он находится в базе данных — аналогично сеансу NHibernate.Load().

Я хотел бы установить значение ID, а затем, если для объекта доступны какие-либо другие свойства, другие свойства загружаются с задержкой — опять же, аналогично сеансу NHibernate.Load()

Я попытался создать прокси с помощью ObjectContext.CreateObject(), устанавливающий значение ID и привязывающий его к контексту. Но свойства не загружаются с задержкой при обращении. Однако свойства навигации будут загружаться с задержкой просто отлично.

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

Возможно ли это с Entity Framework 4?

Ответ №1:

Нет, это невозможно. Причина в том, что Entity framework поддерживает только отложенную загрузку навигационных свойств. Вы не можете лениво загружать скалярные или сложные свойства. Вы должны загрузить объект из базы данных, чтобы их заполнить.