繁体   English   中英

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

[英]Considering proper way between stored procedure and C# business logic layer code

我正在使用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应用程序的性能和大数据量时,哪个选项最合适?

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

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

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

LinqExtensions :仍然是一个强大的功能,但是在少量数据库上确实可以很好地工作。 如果数据量很大,则会在其中看到性能问题。

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

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM