#entity-framework-4 #lazy-loading
#entity-framework-4 #отложенная загрузка
Вопрос:
Я пытаюсь создать прокси-сервер POCO для объекта, о котором уже известно, что он находится в базе данных — аналогично сеансу NHibernate.Load().
Я хотел бы установить значение ID, а затем, если для объекта доступны какие-либо другие свойства, другие свойства загружаются с задержкой — опять же, аналогично сеансу NHibernate.Load()
Я попытался создать прокси с помощью ObjectContext.CreateObject(), устанавливающий значение ID и привязывающий его к контексту. Но свойства не загружаются с задержкой при обращении. Однако свойства навигации будут загружаться с задержкой просто отлично.
Я хотел бы использовать эту функциональность для случаев, когда мне нужен объект и я знаю идентификатор, но не хочу принудительно обращаться к дополнительной базе данных для загрузки объекта. Я также хочу убедиться, что свойства могут быть загружены в случае, если они необходимы.
Возможно ли это с Entity Framework 4?
Ответ №1:
Нет, это невозможно. Причина в том, что Entity framework поддерживает только отложенную загрузку навигационных свойств. Вы не можете лениво загружать скалярные или сложные свойства. Вы должны загрузить объект из базы данных, чтобы их заполнить.