考虑存储过程和C#业务逻辑层代码之间的正确方法

时间:2012-03-29 04:35:17

标签: 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 direction)
    {
        ...
    }

    public static IQueryable<T> Where<T>(this IQueryable<T> query,
        string column, object value, WhereOperation operation)
    {
        ....
    }
}

另一种方法是使用允许解析参数值的存储过程,其中包括排序和搜索条件。

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

哪些选项在Web应用程序和大数据量的性能方面最佳?

1 个答案:

答案 0 :(得分:1)

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

StoredProcedure:每次编译功能强大。编写SP,以便根据分页和排序提供记录。使用CTE可以进一步提高性能。有关详细信息,请参阅http://www.sqlteam.com/article/server-side-paging-using-sql-server-2005

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

LinqExtensions :仍然是一个强大的功能,但它适用于小型数据库。如果数据量很大,您将看到其中的性能问题。

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

希望它有所帮助。