ASP.NET MVC: BLL und DAL auf die Repository-design
Bewegen wir uns aus ASP.NET Web-Formulare MVC 2.0. In den meisten unserer Projekte haben wir ein typisches setup für die Kommunikation mit einer Datenbank.
Gemeinsamen (Objekte/Entitäten wie "SiteMenu' und 'Benutzer')
Business Logic Layer (mit Aufrufe von de Data Access Layer)
Data Access Layer
Die DAL hat eine DatabaseHelper mit gängigen Datenbank-Betrieb, ein OdbcHelper mit Datenbank-spezifischen Operationen (z.B. MySQL) und eine StoredProcedure Klasse mit allen gespeicherten Prozeduren.
Ist, wie dieses design übersetzt in eine repository-design? Wir wollen mit unserer eigenen Datenbank Helfer statt NHibernate usw.
Was würden Sie vorschlagen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nutzen könnten repositories über jedes Daten-access-Technologie.
Ein repository ist Abstraktion über vorhandene Daten zugreifen Helfer /services, damit die Entkopplung der business logic von der data access layer. Repositories zusammen mit den Abfrage-filtern aktiviert. Es wird oft zusammen mit Arbeitseinheit zum speichern der änderungen zurück in die Datenbank.
Repository hat mindestens:
Ein sehr einfaches Beispiel :):
A. Produkt Klasse , definiert in Gemeinsamen:
B. Klassen für Abfrage, IRepository und IUnitOfWork definiert sind DAL.interfaces.dll oder Common.dll (aber NICHT in DAL!).
IUnitOfWork ist bewusst das geänderte Entitäten. Speichern() fordert eine angemessene DatabaseHelper /OdbcHelper CRUD-Methode für jede Entität geändert, um zu bestehen die änderungen in der Datenbank.
Die Umsetzung der IRepository<Produkte>, ... IRepository<EntityXY> und IUnitOFWork gesetzt werden sollte, in DAL. Der BLL verwendet dann IRepository und IUnitOFWork um die Implementierung von business (domain -) Logik. Der BLL sich organisiert werden könnte als service layer auf der Oberseite der domain-Modell, aber es ist außerhalb der Reichweite der Diskussion :).
Ich hoffe, meine Antwort hilft.
Bitte fühlen Sie sich frei, mich zu Fragen, eine Frage ...
Links:
Patterns of Enterprise application architecture von Martin Fowler
Können Sie pflegen die gleichen mehrschichtigen Ansatz, der beim übergang zu MVC. Ihr BLL zurückgibt, Entitäten/Objekte, die Ihre M in MVC). Oft sehen Sie in Proben, wo die Menschen eine Instanz erstellen des repository direkt in Ihren Controller, in deinem Fall werden Sie erstellen eine Instanz der BLL-Klasse.