我對MVC模式不是很熟悉。你能告訴我以下三種管制員行動哪一種更好?謝謝:)在控制器中使用linq查詢是不是很好的做法?
(1)具備動作查詢:
public ActionResult List()
{
var query = repository.Query().Where(it => it.IsHandled).OrderBy(it => it.Id);
// ...
}
(2)具有在服務查詢:
public ActionResult List()
{
var items = service.GetHandledItemsOrderById();
// ...
}
(3)在行動中有順序:
public ActionResult List()
{
var items = service.GetHandledItems().OrderBy(it => it.Id);
// ...
}
如果我們選擇(1),那麼我們在控制器中有太多的業務邏輯?
如果我們選擇(2),可能會有很多服務方法,如GetXXXByYYY()
。
如果我們選擇(3),我們爲什麼封裝Where(it => it.IsHandled)
但不
OrderBy(it => it.Id
。
任何想法?
謝謝。如果「GetHandledItems()」返回一個集合(不是IQueryable),我們就不能對查詢執行投影。它會影響性能。 –
@Dylan - 因此,在執行查詢之前,在服務中進行預測,可以通過內聯或通過其他管道方法執行,例如:'return repo.Query()。WhereHandled()。WithOrdering()AsSomeProjectedType()' – RPM1984
這**輝煌的** RobCon vid MVC管道和過濾器:http://www.asp.net/mvc/videos/aspnet-mvc-storefront-part-3-pipes-and-filters – RPM1984