title: Multiple Data Transfer Objects for same domain model
body: <p>How do you solve a situation when you have multiple representations of same object, depending on a view?</p>
  
  <p>For example, lets say you have a book store. Within a book store, you have 2 main representations of Books:</p>
  
  <ol>
  <li>In Lists (search results, browse by category, author, etc...): This is a compact representation that might have some aggregates like for example NumberOfAuthors and NumberOfRwviews. Each Author and Review are entities themselves saved in db.</li>
  <li>DetailsView: here you wouldn't have aggregates but real values for each Author, as Book has a property AuthorsList.</li>
  </ol>
  
  <p>Case 2 is clear, you get all from DB and show it. But how to solve case 1. if you want to reduce number of connections and payload to/from DB? So, if you don't want to get all actual Authors and Reviews from DB but just 2 ints for count for each of them.</p>
  
  <p>Full normalized solution would be 2, but 1 seems to require either some denormalization or create 2 different entities: BookDetails and BookCompact within Business Layer.</p>
  
  <p>Important: I am not talking about View DTOs, but actually getting data from DB which doesn't fit into Business Layer Book class.</p>