我開發了一個帶有ASP.NET MVC 5和實體框架的n層電子商務應用程序。 Mybe當然,我可以在將來改變我的DAL。但我可以弄清楚應該如何爲我的DAL層動態查詢。想象一下,用戶在網站上列出產品,他們可以按產品類型或類別等過濾產品。可能是按價格或按字母順序排序的產品等。我的意思是我需要完全動態的查詢。在這一點上,我使用EF,如果我創建了我的動態查詢,如果它不適用於其他DAL技術(nhibername,ado.net等)。 我該怎麼辦?使用動態查詢的DAL層
//in my controller
var db = ApplicationDbContext.Create();
IQueryable<Product> query = from q in db.Products
where
q.ProdType == ProdType.StorPerde && q.UserId == LoggedUserId &&
!selectedStorPerdeId.Contains(q.ProdId)
select q;
List<Product> prods = _productService.GetAll(query);
//service layer
public List<Product> GetAll(IQueryable<Product> query)
{
return _productDal.GetAll(query);
}
//dal
public List<Product> GetAll(IQueryable<Product> query)
{
return query.ToList();
}