Доступ к совокупным объектам без отложенной загрузки - PullRequest
3 голосов
/ 17 апреля 2009

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

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

EDIT:

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

Ответы [ 3 ]

1 голос
/ 05 июня 2009

Согласно вашему редактированию: В этих ситуациях я создаю класс View или класс DTO, который содержит только те свойства, которые меня интересуют. Например, у меня может быть класс PersonView, который, например, имеет только свойство Name.

Затем, используя мое сопоставление OR / M (я использую NHibernate), я создаю запрос HQL (или запрос Criteria), который работает с моей сущностью Person. Прежде чем выполнить запрос, я сообщаю NHibernate, что я хочу получить объекты PersonView в качестве результата (я указываю проекцию). Затем NHibernate достаточно умен, чтобы выполнить запрос, который извлекает только те столбцы, которые необходимы для заполнения экземпляров PersonView.

1 голос
/ 05 июня 2009

Не думаю, что это возможно без ленивой загрузки.

  • Получение всех данных за один раз: стремительная загрузка
  • Получение данных при обращении: Ленивая загрузка
0 голосов
/ 05 января 2014

Один из способов избежать отложенной загрузки - просто использовать объект 'id'

...