Sembra che ad ogni esempio trovo il modello di repository, l'implementazione è in qualche modo diversa. I seguenti sono i due esempi che trovo principalmente.Implementazione del modello di repository
interface IProductRepository
{
IQueryable<Product> FindAll();
}
V'è poi un altro strato di solito che parla al repository e chiama il metodo FindAll() ed esegue tutte le operazioni, come i prodotti che trovano che iniziano con 's' o prodotti che vanno a prendere la lettera in una particolare categoria.
L'altro esempio che trovo un sacco messo tutti i metodi find nel repository
interface IProductRepository
{
IEnumerable<Product> GetProductsInCategory(int categoryId);
IEnumerable<Product> GetProductsStartingWith(string letter);
IEnumerable<PromoCode> GetProductPromoCodes(int productId);
}
Quale strada mi consigliate prendo? O quali sono i vantaggi/svantaggi l'uno dell'altro?
Dalla mia comprensione di aver letto http://martinfowler.com/eaaCatalog/repository.html il primo approccio sembra riflettere meglio questo?
Grazie per la risposta. Pensavo che fossi destinato a raggruppare per aggregati? Dovrei avere un repository per entità? Anche qui c'è un esempio del primo esempio che ho fornito.http: // StackOverflow.it/questions/5049363/difference-between-repository-and-service-layer – Scott
Per aggregato. Non potevo dire che i codici promozionali erano solo per prodotti. (poiché è stato chiamato 'GetProductPromos' e non solo' GetPromos') – jgauffin
non ha la tua prima interfaccia, anche 2 motivi per cambiare? primo: cambiare il metodo FindForCategory per modificare il prodotto restituito predefinito se non trova alcun prodotto passando categoryId e in secondo luogo cambiando FindAllStartingWith per applicare alcuni filtri predefiniti? – Masoud