考虑存储过程和C#业务逻辑层代码之间的适当方式

考虑存储过程和C#业务逻辑层代码之间的适当方式,c#,sql,asp.net-mvc,C#,Sql,Asp.net Mvc,我正在使用JQGrid控件。它功能强大,功能丰富 现在我必须考虑两件事: 网格数据排序 搜寻 我的问题是我有两个选择来解决这个问题 一种是使用C#LinqExtensions方法 public static class LinqExtensions { public static IQueryable<T> OrderBy<T>(this IQueryable<T> query, string sortColumn, string directio

我正在使用JQGrid控件。它功能强大,功能丰富

现在我必须考虑两件事:

  • 网格数据排序
  • 搜寻
我的问题是我有两个选择来解决这个问题

一种是使用C#LinqExtensions方法

public static class LinqExtensions
{
    public static IQueryable<T> OrderBy<T>(this IQueryable<T> query, string sortColumn, string direction)
    {
        ...
    }

    public static IQueryable<T> Where<T>(this IQueryable<T> query,
        string column, object value, WhereOperation operation)
    {
        ....
    }
}
公共静态类LinqExtensions
{
公共静态IQueryable OrderBy(此IQueryable查询,字符串sortColumn,字符串方向)
{
...
}
公共静态IQueryable Where(此IQueryable查询,
字符串列,对象值,WhereOperation(操作)
{
....
}
}
另一种方法是使用存储过程,它允许解析参数值,其中包括排序和搜索条件

如果我使用第二个选项,我就不再需要依赖LinqExtension类


当涉及到web应用程序的性能和大数据量时,哪种选择是最好的?

这两种方法都很好,可以适用于任何实时应用程序。关于这两种方法的几点看法

存储过程:每编译一次功能强大得多。编写SP,以便它根据分页和排序提供记录。使用CTE可以进一步提高性能。有关更多详细信息,请参阅

如果数据库包含大量记录,这种方法将提高性能

LinqExtensions:仍然是一个强大的功能,但它在一小部分数据库中运行得非常好。如果数据量很大,您会发现其中存在性能问题

我个人的选择将是第一种方法


希望有帮助。

这是存储过程-就像存储在数据库服务器中一样(它与存储本身无关)回答得很好,谢谢@Shailesh,我喜欢CTE风格的sql语句。然后我喜欢你们给我的sqlteam文章。现在我决定把我的代码放在
StoredProcedure
层。