title: Domain Entities, DTO, and View Models
body: <p>I have an ASP.NET MVC 2 application with a POCO domain model and an NHibernate repository layer.  My domain model has no awareness of my viewmodels so I use automapper to go from viewmodel to entity and vice/versa.</p>
  
  <p>When I introduced WCF to my project (a late requirement), I started having to deal with disconnected objects.  That is, I retrieve an entity from the database with NHibernate and once that entity is serialized it becomes disconnected and each child collection is loaded regardless of whether or not I plan on using it meaning I'm doing alot of unnecessary database work.</p>
  
  <p>After reading up on this, I see that it is highly recommended that you not expose your entities outside of your domain project and you should instead use DTOs.</p>
  
  <p>I see the reason for this but I'm having trouble figuring out how to implement it.</p>
  
  <p>Do I map from viewmodel to DTO in ASP.NET MVC, send DTOs through the service layer, and map from DTO to entity in the service layer?  Where should I define my DTOs?</p>