In general, I don’t like to keep code (BaseClasses or DataAccess Code) in the App_Code directory of an ASP.NET Site. I’ll usually pull this stuff out into a MySite.BusinessLogic & MySite.DataAccess DLL’s respectively.
I’m wondering should I be doing the same for ASP.NET MVC.
Would it be better to Organise the solution something along the lines of
- MySite.Common – DLL – (Basic Functionality built on .NET System Dlls)
- MySite.DAL – DLL – (DataAccessLayer & DBML Files)
- MySite.Models – DLL – (MVC Models e.g. Repository Classes)
- MySite.Controllers – DLL (MVC Controllers which use Models)
- MySite – ASP.NET MVC Site.
Or am I missing something… presumably, I’ll lose some of the nice (Add View, Go To Controller, context menu items that have been added)
I have only done a few projects using MVC but using your naming structure we did the following:
DBML Files and Repostiory Models)
of the MVC web app and only had
models specific to views that did not
always map one to one for each
repository model.
of MVC app but could link to a Business Layer
So in the end had the following projects in my MVC solution:
EDIT: My DALs alway output wrapped objects (if using Linq2Sql then I map the autogenerated classes to my classes in the DAL directly). The only classes that exist in the MVC app are containers that represent the viwes and mainly used to pass data to the views.
If your mobile app is using similar views I wouldn’t try and re-use the same classes from your MVC app views. There is always slight differences that you will need to manage and you should be able to just use the DAL classes to map to your mobile views which follows the pattern of keeping the view classes localized to the app.