La mia domanda è simile a questa su Stack Overflow: Qual è il modo corretto di utilizzare l'unità di lavoro / repository all'interno del livello aziendale?
Scenario:
- .Net solution
- IRepository utilizzato per recuperare oggetti dal DB
- IUnitOfWork utilizzato per consentire transazioni su più repository
Questo ha senso per me e ho implementato qualcosa in questo senso che funziona bene. Ora voglio introdurre un livello di business logic e sto avendo problemi a organizzare i tre elementi (BLL, UnitOfWork e Repository) nella mia mente.
Comprensione:
- Repository - recupero dei dati, manipolazione
- UnitOfWork - persistenza
- BLL - logica rilevante per il business ('mondo reale') (non mi piace quel termine!)
Considera che abbiamo un front-end MVC ASP.Net.
Che aspetto ha un BLL e che aspetto ha il controller MVC che lo usa?
Per riferimento: Mi chiedo se forse la mia implementazione di IUnitOfWork / IRepository potrebbe essere la causa alla base della mia confusione.
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
}
Quindi mi sento come se avessi un BLL, dovrei passarlo a IUnitOfWork, in modo che possa usarlo per creare le istanze IRepository di cui ha bisogno. Ma in che modo il BLL (DLL separata dal front-end) 'sa' quale implementazione di IRepository creare?