Meine Frage ähnelt der zum Stapelüberlauf: Wie kann die Arbeitseinheit / die Repositorys in der Geschäftsschicht richtig verwendet werden?
Szenario:
- .Net-Lösung
- IRepository zum Abrufen von Objekten aus der Datenbank
- IUnitOfWork wurde verwendet, um Transaktionen über mehrere Repositorys hinweg zuzulassen
Das macht für mich Sinn und ich habe etwas in diese Richtung implementiert, das gut funktioniert. Jetzt möchte ich eine Geschäftslogikschicht einführen und habe Probleme, die drei Elemente (BLL, UnitOfWork und Repository) in meinem Kopf zu organisieren.
Mein Verständnis:
- Repository - Datenabruf, Manipulation
- UnitOfWork - Persistenz
- BLL - Logik, die für das Geschäft relevant ist ('reale Welt') (mag diesen Begriff nicht!)
Angenommen, wir haben ein ASP.Net MVC-Frontend.
Wie sieht eine BLL aus und wie sieht der MVC-Controller aus, der sie verwendet?
Als Referenz: Ich frage mich, ob meine IUnitOfWork / IRepository-Implementierung möglicherweise die Ursache für meine Verwirrung ist.
public class IRepository<T>
{
private IObjectSet<T> objSet;
public IRepository<T>(IUnitOfWork uow)
{
objSet = uow.CreateObjectSet<T>();
}
public IQueryable<T> Add(T entity)
{
objSet.Add(entity);
}
//etc. etc. for delete, attach, getall
}
Wenn ich also eine BLL habe, sollte ich sie an IUnitOfWork übergeben, damit sie damit die benötigten IRepository-Instanzen erstellen kann. Aber woher weiß die BLL (separate DLL vom Frontend), welche Implementierung von IRepository erstellt werden soll?