title: How to structure projects with ASP MVC using Repository Pattern, Service Pattern, UnitOfWork, ORM (EF, NHibernate etc..)?
body: <p>Although I am seeing lots of discussions about this topic, I can't find a very detailed answer regarding this. I want to know which should I put here and there.</p>
  <p>Where should I put the <code>IRepository</code> interface. In the DataAccess or in separate project say &quot;Repository&quot;? How about other abstract Repositories that will extend IRepository&lt;&gt; like <code> ICustomerRepository : IRepository </code>? Will they reside on the same project? How about the concrete implementation of <code>CustomerRepository : BaseRepository, ICustomerRepository</code></p>
  <p>And my POCO, where should I put them??</p>
  <p>The UnitOfWork and Service Layers?</p>
  <p>PS: Can all my Services just contain the UnitOfWork so I can call any repository? Is there a drawback there? or why would I want to use Repository over the UnitOfWork on Services?</p>