2010-12-30 6 views
2

J'ai une solution Visual Studio avec plusieurs projets. Je ne suis pas entièrement satisfait de la structure du projet et de ses avantages.Conserver le modèle et le référentiel dans des projets distincts

Par exemple: J'ai un projet appelé DOMAIN. Ici, j'ai plusieurs dossiers comme:

DOMAIN 
| 
|_Repository 
    |__Implementations 
    |____|__OrderRepository.cs 
    |____|__CustomerRepository.cs 
    |__Contracts 
    |____|__IOrderRepository.cs 
    |____|__ICustomerRepository.cs 
    SessionManager.cs 
    Model 
    |__Customer.cs 
    |__Order.cs 

QUESTION: Si le modèle est séparé du dépôt dans un projet supplémentaire?

Si oui, POURQUOI?

Répondre

3

Si vous vous efforcez que votre application soit agnostique de stockage, alors oui. Une façon de le faire est de faire en sorte que votre modèle contienne des abstractions pour vos référentiels, tels que des classes ou des interfaces abstraites. Ensuite, vous auriez un projet distinct, que vous pourriez appeler quelque chose comme couche d'accès aux données (DAL), et il contiendrait une référence à votre projet de modèle et mettre en œuvre les référentiels abstraits. Les avantages de ceci sont une séparation plus claire des responsabilités entre votre projet (par exemple votre projet de modèle implémente la logique d'affaires et votre projet de DAL connaît les détails sanglants sur la manière d'extraire des données). De plus, cela vous permettrait d'implémenter deux DAL différents, un ciblant SQLServer et un ciblant SqlLite par exemple.

+0

allait poster quelque chose de très similaire +1 – tQuarella

+0

ok je pourrais juste échanger le projet avec le DAL pour sqlite et utiliser un sqlserverdal. Tout semble correct donc je l'ai marqué comme une solution, mais avec un outil ORM comme Entity Framework votre conseil n'a pas de sens, n'est-ce pas? Je interroge un contexte via un LINQ-Provider et cela peut être sqlite/sqlserver/mysql etc ... – Elisabeth

+0

argh ... J'ai eu une faute de frappe importante haha. J'ai déjà 2 projets mais le DAL a l'implémentation + contrats le MODEL a les entités ... ok pour l'effet d'apprentissage je déplace les interfaces au MODÈLE bien que j'aime garder les contrats impl. + Ensemble en quelque sorte ;-) – Elisabeth

Questions connexes