【问题标题】:PagedList doesn't make a real paging in asp.net mvcPagedList 不会在 asp.net mvc 中进行真正的分页
【发布时间】:2015-10-09 11:31:06
【问题描述】:

在我的项目中,我需要对查询进行分页。我使用实体框架从数据库中获取数据。 This video on youtube 解释如何对查询进行分页。简而言之,视频说您所要做的就是将 PagedList.Mvc 安装到您的项目和此代码中

.ToPagedList(PageNumber,PageSize)

首先,这似乎对我有用,但我发现(在使用 Sql server 配置文件检查什么实体框架传递给 sql server 之后)实体框架向 sql server 询问所有数据,然后选择需要的数据。更清楚地说,这是我在 c#(服务器端)上的代码

var messages = db.Messages.Where(x => x.User1 == 1 && x.User2 == 2).OrderBy(x=>x.Date).ToList().ToPagedList(1,4);

传递给 sql server 的是这样的:

exec sp_executesql N'SELECT 
    [Project1].[Id] AS [Id], 
    [Project1].[User1] AS [User1], 
    [Project1].[User2] AS [User2], 
    [Project1].[Direction] AS [Direction], 
    [Project1].[TextContent] AS [TextContent], 
    [Project1].[ReadBit] AS [ReadBit], 
    [Project1].[Date] AS [Date], 
    [Project1].[ReceivedBit] AS [ReceivedBit]
    FROM ( SELECT 
        [Extent1].[Id] AS [Id], 
        [Extent1].[User1] AS [User1], 
        [Extent1].[User2] AS [User2], 
        [Extent1].[Direction] AS [Direction], 
        [Extent1].[TextContent] AS [TextContent], 
        [Extent1].[ReadBit] AS [ReadBit], 
        [Extent1].[ReceivedBit] AS [ReceivedBit], 
        [Extent1].[Date] AS [Date]
        FROM [Messages].[Messages] AS [Extent1]
        WHERE ([Extent1].[User1] = @p__linq__0) AND ([Extent1].[User2] = @p__linq__1)
    )  AS [Project1]
    ORDER BY [Project1].[Date] ASC',N'@p__linq__0 int,@p__linq__1 int',@p__linq__0=1,@p__linq__1=2

所以 sql server 中没有分页,我认为这样的分页没有优势。我是否错过了一些不起作用的东西?还是这样工作?

【问题讨论】:

  • 你里面为什么有.ToList()
  • .ToPagedList() 使用 .Skip().Take() 但您首先使用 .ToList() 实现了查询
  • 我认为这可以解决问题。
  • 我对此进行了测试,它确实解决了我的问题。请发表您的评论作为答案,以使其成为真实的@GertArnold

标签: c# sql-server asp.net-mvc entity-framework pagedlist


【解决方案1】:

PagedListSkip()Take() 附加到您的查询(计算从PageNumberPageSize 跳过的行数)。但是查询应该是原始的IQueryable,以便这些添加到达查询提供程序并影响 SQL 转换。 ToList 断开此连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多