NHibernate DTO с глубоким графом объектов - PullRequest
3 голосов
/ 13 марта 2012

Я пишу интеллектуальное клиентское WPF-приложение, использующее MVVM, которое взаимодействует с сервисным уровнем WCF, содержащим бизнес-логику и доменные объекты, которые используют NHibernate для управления постоянством. Мы контролируем обе стороны провода.

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

До сих пор я работал над преобразованием простых доменных объектов в DTO, используя SetResultTransformer, и это работало довольно хорошо.

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

Вопросы:
1) Как люди создают DTO, где есть несколько сколько коллекций вернуть, как в этом примере?
2) Есть ли опасения, что DTO станет слишком большим?
3) При отправке DTO обратно на сервер лучше отправлять DTO того же типа с обновленными значениями или какой-нибудь другой, более ориентированный на команды DTO?

Спасибо за любую помощь

Alex

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Вы пробовали Automapper? Я делаю все свои отображения DTO с Automapper, и это работает как шарм. Взгляните на automapper . Я уверен, что вам понравится.

1 голос
/ 13 марта 2012

В настоящее время мы используем довольно большие DTO, и они работают довольно хорошо.NHibernate выполняет ленивую загрузку, поэтому это помогает с большими объектами.

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

В зависимости оттип приложения ленивая загрузка может быть немного проблемой.У нас были некоторые проблемы с нашим многофункциональным клиентским приложением с большими DTO, но при некотором планировании и звуковой архитектуре это работает довольно хорошо.

Я не знаю, действительно ли большие DTO являются проблемой с NHibernate, но пока мыУ меня нет проблем.

Мы отправляем весь объект туда-сюда, и все идет хорошо.NHibernate обновляет только измененные поля, и это действительно хорошо.

Я бы не сериализовал объекты NHIbernate через веб-сервисы или что-то в этом роде (я не знаю уровень сервиса WCF и как он взаимодействует с вашим приложением).Если я передаю данные через веб-сервисы, я генерирую новые объекты данных и соответствующим образом заполняю их, передаю их туда-сюда и обновляю объекты NHibernate.

...