考虑存储过程和C#业务逻辑层代码之间的适当方式
我正在使用JQGrid控件。它功能强大,功能丰富 现在我必须考虑两件事:考虑存储过程和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
- 网格数据排序
- 搜寻
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
层。