Объекты домена, DTO, и модели просмотра

У меня есть приложение ASP.NET MVC 2 с моделью предметной области POCO и уровнем репозитория NHibernate. Моя модель предметной области не осведомлена о моих моделях представления, поэтому я использую automapper для перехода от модели представления к сущности и наоборот.

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

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

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

Должен ли я отображать из модели представления в DTO в ASP.NET MVC, отправлять DTO через уровень сервиса и отображать из DTO в объект на уровне сервиса? Где мне определить свои DTO?

16
задан Mayo 16 March 2011 в 18:44
поделиться