相关疑难解决方法(0)

实体框架/ Linq to SQL:Skip&Take

只是好奇Skip&Take应该如何工作.我得到了我想在客户端看到的结果,但是当我连接AnjLab SQL Profiler并查看正在执行的SQL时,它看起来好像在查询并将整个行集返回到客户.

是否真的返回所有行,然后在客户端使用LINQ对事物进行排序和缩小?

我尝试过使用Entity Framework和Linq to SQL; 两者似乎都有相同的行为.

不确定它有什么不同,但我在VWD 2010中使用C#.

任何见解?

public IEnumerable<Store> ListStores(Func<Store, string> sort, bool desc, int page, int pageSize, out int totalRecords)
{
    var context = new TectonicEntities();
    totalRecords = context.Stores.Count();
    int skipRows = (page - 1) * pageSize;
    if (desc)
        return context.Stores.OrderByDescending(sort).Skip(skipRows).Take(pageSize).ToList();
    return context.Stores.OrderBy(sort).Skip(skipRows).Take(pageSize).ToList();
}
Run Code Online (Sandbox Code Playgroud)

结果SQL(注意:我排除了Count查询):

SELECT 
[Extent1].[ID] AS [ID], 
[Extent1].[Name] AS [Name], 
[Extent1].[LegalName] AS [LegalName], 
[Extent1].[YearEstablished] AS [YearEstablished], 
[Extent1].[DiskPath] AS [DiskPath], 
[Extent1].[URL] AS [URL], 
[Extent1].[SecureURL] AS [SecureURL], 
[Extent1].[UseSSL] AS [UseSSL]
FROM [dbo].[tec_Stores] AS [Extent1] …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server-2008 linq-to-sql entity-framework-4

43
推荐指数
2
解决办法
7万
查看次数