2010-12-30 6 views
2

Ich habe eine Visual Studio-Lösung mit mehreren Projekten.Keep Model und Repository in separaten Projekten

Ich bin nicht zu 100% über die Projektstruktur und ihre Vorteile entschieden.

Zum Beispiel: Ich habe ein Projekt namens DOMAIN. Hier habe ich mehrere Ordner wie:

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

FRAGE: Sollte das Modell aus dem Repository in einem zusätzlichen Projekt getrennt werden?

Wenn ja, WARUM?

Antwort

3

Wenn Sie danach streben, dass Ihre Anwendung speicherunabhängig ist, dann ja. Eine Möglichkeit besteht darin, dass Ihr Modell Abstraktionen für Ihre Repositorys enthält, z. B. abstrakte Klassen oder Schnittstellen. Dann hätten Sie ein separates Projekt, das Sie so etwas wie Data Access Layer (DAL) nennen könnten, und es würde einen Verweis auf Ihr Modellprojekt enthalten und die abstrakten Repositories implementieren.

Die Vorteile sind eine sauberere Trennung der Verantwortlichkeiten zwischen Ihrem Projekt (z. B. implementiert Ihr Modellprojekt Geschäftslogik und Ihr DAL-Projekt kennt die blutigen Details zum Abrufen von Daten). Darüber hinaus können Sie damit zwei verschiedene DALs implementieren, von denen einer auf SQL Server und der andere auf SqlLite abzielt.

+0

war Post etwas sehr ähnlich +1 – tQuarella

+0

ok Ich könnte nur das Projekt mit der DAL für sqlite tauschen und ein sqlserverdal verwenden. Klingt alles ok also habe ich es als Lösung markiert, aber mit einem ORM-Tool wie Entity Framework macht dein Rat keinen Sinn, oder? Ich frage einen Kontext über einen LINQ-Provider und dies kann SQLite/SQLServer/MySQL usw. sein ... – Elisabeth

+0

argh ... Ich hatte einen wichtigen Tippfehler haha. Ich habe bereits 2 Projekte, aber die DAL hat die Implementierung + Verträge das MODEL hat die Entitäten ... ok für den Lerneffekt Ich bewege die Schnittstellen zum MODEL obwohl ich die Impl. + Verträge irgendwie zusammenhalten möchte ;-) – Elisabeth

Verwandte Themen