Non ho molta familiarità con il pattern MVC. Potresti dirmi quale delle seguenti tre azioni del controller è migliore? Grazie :)È buona norma avere una query linq in Controller?
(1) Avere query in azione:
public ActionResult List()
{
var query = repository.Query().Where(it => it.IsHandled).OrderBy(it => it.Id);
// ...
}
(2) Avere query in servizio:
public ActionResult List()
{
var items = service.GetHandledItemsOrderById();
// ...
}
(3) avere ordine per in azione :
public ActionResult List()
{
var items = service.GetHandledItems().OrderBy(it => it.Id);
// ...
}
Se scegliamo (1), abbiamo troppa logica di business nel controller?
Se scegliamo (2), potrebbero esserci molti metodi di servizio come GetXXXByYYY()
.
Se scegliamo (3), perché incapsuliamo Where(it => it.IsHandled)
ma non
OrderBy(it => it.Id
.
Qualche idea?
Grazie. Bu se "GetHandledItems()" restituisce una raccolta (non IQueryable), non è possibile eseguire proiezioni sulla query. Influirà sulle prestazioni. –
@Dylan - Quindi le tue proiezioni nel servizio prima di eseguire la query, inline o tramite un altro metodo pipe, ad es .: 'return repo.Query(). WhereHandled(). WithOrdering(). AsSomeProjectedType()' – RPM1984
Guarda anche questo ** geniale ** RobCon vid su MVC Pipes & Filters: http://www.asp.net/mvc/videos/aspnet-mvc-storefront-part-3-pipes-and-filters – RPM1984