我在ASP.net MVC 2中创建了一个带有数据库SQL服务器的网上商店。
如果我需要通过网上商店从数据库中的库存过滤特殊产品。
我应该选择哪些选项?为什么?
通过存储过程进行过滤?
使用LINQ作为C-sharp编码?
另一种解决方案?
答案 0 :(得分:3)
如果你真的想优化你的sql,我只会使用存储过程。否则,如果你想保持它的灵活性并且可以轻松地插入过滤器,我会推荐一种类型的管道和过滤器模式。它会像这样工作:
public class ProductRepository
{
public IQueryable<Prodcut> GetAll()
{
return yourContext.Products;
}
}
public static class ProductFilters
{
public static IQueryable<Product> ByCategory(this IQueryable<Product> query, string category)
{
return query.Where(p => p.Category == category);
}
}
在这种情况下,名称ProductRepository
可能是错误的,因为它不是真正的存储库,更像是某种“桥”。但是这种模式允许您轻松添加其他过滤器,如扩展方法。从扩展方法和“存储库”返回IQueryable
非常重要,这使得查询只能评估一次,您可以链接过滤器。
答案 1 :(得分:1)
我在类似情况下使用以下内容: