У меня есть приложение ASP.NET MVC 2 с моделью домена POCO и уровнем репозитория NHibernate. Моя модель домена не имеет представления о моих моделях просмотра, поэтому я использую automapper для перехода от viewmodel к объекту и наоборот /versa.
Когда я ввел WCF в мой проект (последнее требование), мне пришло в голову разобраться с отключенными объектами. То есть я извлекаю объект из базы данных с помощью NHibernate, и после того, как этот объект сериализуется, он отключается, и каждая дочерняя коллекция загружается независимо от того, планирую ли я ее использовать, то есть я делаю много ненужной работы с базой данных.
После ознакомления с этим я вижу, что вам настоятельно рекомендуется не подвергать объекты за пределами вашего проекта домена, и вместо этого вы должны использовать DTO.
Я вижу причину этого, но мне трудно понять, как его реализовать.
Я могу отобразить из viewmodel в DTO в ASP.NET MVC, отправить DTO через сервисный уровень и сопоставить DTO с объектом на уровне сервиса? Где я должен определять свои DTO?