I've never worked with MVC design pattern before and recently I started to work on the project using ASP.NET MVC.
I'm using ActiveRecord as my data layer.
I'm also using view models (unique for each view) and AutoMapper to map my view models to EntityFramework entities.
In a few days reseaching about MVC, EntityFramework and reading different articles I came up with the following design:
In my solution I have Web project (Presentation Layer) which contains Views and Controllers.
I have Core project where I define my ViewModels and Services (Business layer where all business logic goes)
I have EntityModels project where all me EF entities live (Data layer)
This design allows me to keep my Data layer separate from my Presentation layer, Web project doesn't know anything about EntityModels project and vise versa, all the logic lives in business layer.
From my controllers (after validation checks) I pass viewModels to Service layer where mapping and all necessary busines logic is executed.
Is this design correct at all?
My consern is that I've read that ViewModels should be defined in Presentation Layer. I saw examples where Presentation Layer has references to Data layer and mapping is done in controllers (good practice?). in this case controllers pass domain models to business layer. I don't have any experience here but I don't like it.
So, can anyone point out where I'm right and where wrong?
thanks in advance.