Tôi không quen với mẫu MVC. Bạn có thể cho tôi biết một trong ba hành động điều khiển sau là tốt hơn không? Cảm ơn :)Có thực hành tốt để có truy vấn LINQ trong Bộ điều khiển không?
(1) Có truy vấn trong hành động:
public ActionResult List()
{
var query = repository.Query().Where(it => it.IsHandled).OrderBy(it => it.Id);
// ...
}
(2) Có truy vấn trong dịch vụ:
public ActionResult List()
{
var items = service.GetHandledItemsOrderById();
// ...
}
(3) Có trật tự bởi trong hành động :
public ActionResult List()
{
var items = service.GetHandledItems().OrderBy(it => it.Id);
// ...
}
Nếu chúng ta chọn (1), thì chúng ta có quá nhiều logic nghiệp vụ trong bộ điều khiển?
Nếu chúng tôi chọn (2), có thể có nhiều phương thức dịch vụ như GetXXXByYYY()
.
Nếu chúng tôi chọn (3), tại sao chúng tôi đóng gói Where(it => it.IsHandled)
nhưng không
OrderBy(it => it.Id
.
Bất kỳ ý tưởng nào?
Cảm ơn. Bu nếu "GetHandledItems()" trả về một bộ sưu tập (không phải IQueryable), chúng tôi không thể thực hiện các phép chiếu trên truy vấn. Nó sẽ ảnh hưởng đến hiệu suất. –
@Dylan - Vì vậy, hãy dự đoán của bạn trong dịch vụ trước khi bạn thực hiện truy vấn, hoặc là nội tuyến hoặc thông qua một phương pháp khác, ví dụ: 'return repo.Query(). WhereHandled(). WithOrdering(). AsSomeProjectedType()' – RPM1984
Đồng hồ ** tuyệt vời này ** RobCon vid trên MVC Ống & Bộ lọc: http://www.asp.net/mvc/videos/aspnet-mvc-storefront-part-3-pipes-and-filters – RPM1984