Im currently trying to refactor a project(asp.net mvc) that doesnt have any separation at all. just folders :s
- The project has a bunch of EF Code First classes (People.cs, Exam.cs,
Message.cs, etc) - The project has several repositories (which all use EF Data
Context) - And of course a lot of controllers and viewmodels
We have a Tests Project but we arent very good at TDD so its not something we are really working on as of now.
I would like to have a clearer separation on the different responsibilities that the project has to address and would appreciate some advice on a good project structure that achieves this.
Please help.
thanks in advance
I would suggest following a Domain Driven Design (DDD) and one suggested way of laying this out would be creating the following projects:
Company.Project.Web<– Your MVC Application, though you can still use WebFormsCompany.Project.Domain<– Data Transfer Objects (DTO’s), ViewModels, Business Logic, EventsCompany.Project.Data<– Repository InterfacesCompany.Project.Data.EF<– EntityFramework Specific Implementation of RepositoriesCompany.Project.Model<– Your EF CodeFirst ClassesCompany.Common<– A common project of utilities and/or extensionsI would suggest you take a look at Project Silk http://silk.codeplex.com/ from the patterns and practices team. Great reference implementation of DDD, Repository, and MVC as well as mixing in HTML 5 and jQuery (vNext).