I completed only a few projects using MVC, but using the naming structure, we did the following:
- MySite.Common - DLL - (basic functionality based on the DLL.NET System)
- MySite.DAL - DLL - (DataAccessLayer & DBML files and replica models)
- MySite.Models - included this as part of the MVC web application and only models specific to always map one to one for each repository.
- MySite.Controllers - Included as part of the MVC application, but may reference the business layer
- MySite is an MVC application.
As a result, the following projects were implemented in my MVC solution:
- MVC Web App - contains controllers, view models for displaying DAL data.
- General - functionality that can be used in other applications
- DAL - contains all data related to data access, including wrapper classes
- BL - optional, if you need more logic for the business.
- Test
EDIT: My DALs always output wrapped objects (when using Linq2Sql then I map the automatically generated classes to my classes in DAL). The only classes that exist in an MVC application are containers that represent viwes and are mainly used to pass data to views.
If your mobile application uses similar views, I would not repeat using the same classes from MVC application views. There are always small differences that you will need to manage, and you should simply use the DAL classes to map to your mobile views, which follow the template for saving view classes localized in the application.
source share