Ste*_*eve 3 linq subsonic paging subsonic3
刚从Subsonic 2.2 ActiveRecord更新到3.0.0.3.我正在尝试使用LINQ来执行这样的分页查找查询(我的对象/表称为"存储库"):
Repository.Find(item => item.DocumentTitle.Contains(searchTerm))
.OrderBy(i => i.DocumentTitle).Skip((currentPage - 1) * itemsPerPage)
.Take(itemsPerPage);
Run Code Online (Sandbox Code Playgroud)
当我使用SQL Server Profiler查看此查询生成的SQL时,SQL中没有分页,所有分页都在C#的内存中完成.现在,Subsonic查询语言确实有一个很好的GetPaged过程可以正常工作,但我认为LINQ也应该这样做.我在这里错过了什么或者这是LINQ的限制吗?
我知道这个Repository.GetPaged()函数,但是没有足够的参数 - 我需要做一个动态排序,以及一个Find().
在进行进一步测试时,此语句正常工作:
(from i in dataContext.Repositories
where i.DocumentTitle.Contains(searchTerm)
orderby i.DateCreated ascending select i)
.Skip((currentPage - 1) * itemsPerPage).Take(itemsPerPage);
Run Code Online (Sandbox Code Playgroud)
执行时,上面的linq语句在sql中正确分页.
我可以得出的唯一结论是,当你使用方法链语法时,一旦你在初始的lamda表达式之外
Repository.Find(item => item.DocumentTitle.Contains(searchTerm))
Run Code Online (Sandbox Code Playgroud)
亚音速SQL解释器停止为最终链接的任何方法创建SQL
.OrderBy(i => i.DocumentTitle).Skip(15).Take(10);
Run Code Online (Sandbox Code Playgroud)
或者,我在这里完全做错了什么?有人有一些见解吗?
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |