Witam ponownie.
Tworzę oprogramowanie typu "cms". Mam projekt podzielony na trzy części:
- Login - zawiera logikę: repozytoria, fasady etc.
- Data - zawiera konteksty entity framework oraz klasy modelu, encje etc.
- Web - aplikacja ASP.NET MVC
- Test - zawiera testy do powyższych
Aktualnie jestem na etapie tworzenia repozytorium i zastanawiam się nad dalszym użyciem.
Repozytorium posiada abstrakcyjną klasę generyczną, która przyjmuje jako argument konstrutkora obiekt IContext, który odpowiednio udostępnia DbSet itp.
Czemu to tak robię? Ponieważ w testach podstawiam sobie zmockowany DbContext. Teraz moje pytanie jak tego użyć w aplikacji Web?
Aplikacja Web nie ma referencji do Data - nie chcę by miała bezpośredni dostęp do kontekstów, a jeśli już to chciałbym te elementy utworzyć w jakimś kontenerze IoC tak, żeby programista w Web nie pisał takiego kodu
var repository = new FileRepository(new FileContext());
idealnie by było
var repository = new FileRepository();
Możliwe jest również bym w klasie miał coś takiego:
class CosTam{
private IRepository _fileRepository;
public CosTam(IRepository fileRepository){
_fileRepostiry =fileRepository;
}
}
?? czy coś w tym stylu.
Troszkę nagmatwane, ale będę wdzięczny z aporady. Dopiero zaczynam ogarniać projekt z użyciem wzorców projektowych