Danke, dass Sie mir geholfen haben, einige dieser Dinge zu verstehen:
Angenommen, ich habe 2 Controller in einer MVC-Anwendung - 1 steuert viewModels in Bezug auf Vertriebsmitarbeiter 1 steuert viewModels für den Vertrieb
Jeder hat ein eigenes Repository, das mit Hilfe des Entity Frameworks auf Daten zugreift (Code first)
beide Repositories sind so eingerichtet, dass sie Dependency Injection handhaben, haben aber auch 0-Argument-Konstruktoren mit Standardwerten, um den entsprechenden EF dataAccess zu verwenden.
Der Controller für die Vertriebsmitarbeiter verwendet die Funktion _salesPeopleRepository.getAllSalesPeople(), die eine Liste der Vertriebsmitarbeiter zurückgibt, um eine Indexansicht zu füllen.
der Vertriebscontroller muss auf dieselbe Liste zugreifen, um eine Auswahlliste zu füllen.
Es gibt verschiedene Möglichkeiten, die Informationen an den Vertriebscontroller zu übermitteln, und ich frage mich, welche davon als die beste Praxis angesehen werden können:
a) Im Controller
db = new DataContext();
_saleRepos = new SalesRepository(db);
_salesPeople = new SalesPeopleRepository(db);
.....
modelA.SalePeopleSelectList = SelectList(_salesPeople.getAllSalesPeople(),"id","name")
b) im SalesRepository - entweder über EF selbst:
public IEnumerable<salesPerson> getAllSalesPeople()
{
return _db.SalesPeople.ToList();
}
c) oder Instanziierung und Injektion desselben Datenzugriffsobjekts vor Aufruf der Funktion
public IEnumerable<salesPerson> getAllSalesPeople()
{
return (new SalesPersonRepository(_db)).getAllSalesPeople();
}
bearbeiten
Wenn die Antwort a) ist, wie sollte benutzerdefinierte Geschäftslogik von 1 Repository aufgerufen werden - sagen Sie zum Beispiel Verkäufe hat eine storeId und das Repository prüft, dass die storeId für den Verkauf eingegeben entspricht der storeId für die salesPerson. Soll der Zugriff auf das salesPerson-Objekt, das für die Geschäftslogik (innerhalb des salesRepository) verwendet wird, über das salesPerson-Repository oder direkt über das dataContext-Objekt erfolgen?
Vielen Dank für Ihre Gedanken und Erfahrungen