使用没有手写SQL的LINQ to Entities在数据库端进行排序,过滤和分页

时间:2015-07-06 03:16:00

标签: linq entity-framework

为了最大限度地减少从SQL服务器传输到应用服务器(IIS)的数据,我想知道人们是否使用纯LINQ to Entites进行排序,过滤和分页。 “纯LINQ”是指没有手写的SQL语句或视图/存储过程。

我发现一些文章有用,例如:

但是它们没有涵盖我需要的所有功能,所以我正在编写自己的帮助程序类以满足以下要求:

  • 多列排序
  • 多列过滤(支持各种联合运算符,如AND / OR,比较运算符,如equals,contains,大于,小于......等等。
  • 寻呼

如前所述,我希望它们可以使用“纯粹的”LINQ to Entities并在数据库端执行。这是一个好主意还是你建议使用存储过程?

非常感谢任何建议或代码样本。

1 个答案:

答案 0 :(得分:0)

您可以在没有存储过程的情况下使用Entity Framework,只需稍加注意,您就可以与最重要的数据库兼容 对于多列排序,您可以使用

OrderBy(x => x.a).ThenBy(x => x.b)... 

对于连接,您可以导航树模型(在查询中,否则激活延迟加载) 分页是

Skip/Take

您可以在同一Where语句中使用布尔表达式来测试多个条件

context.Persons.Where(p => p.Name == "me" && p.Age == 15)

并添加不同的where语句。

tbl.Where(...).Where(...)

使用AND

插入查询中的2条件

我不使用存储过程,因为它与不同的DBMS兼容,但有几个人这样做。