User-821857111 posted
If you start with the database, you cannot be using DDD by definition. If you are creating domain objects that are basically no more than copies of the objects defined in the edmx, you should consider getting rid of the edmx file altogether and using a code
first approach. That way you can practice DDD.
Repositories normally return domain objects. The only time I return something else is if I want to return a projection - a subset of the data represented by the entity.
DTOs are intended to be used to represent data being transferred across processes - e.g. by Web-based APIs. There is no place for them purely within the confines of an MVC app. The only other type of object you should define is a view model - an object that
represents all the data required for a view.
http://www.mikesdotnetting.com/article/188/view-model-design-and-use-in-razor-views