【问题标题】:Get Total Records Count and Custom No of Records in One Database Hit在一次数据库命中中获取总记录数和自定义记录数
【发布时间】:2013-11-27 05:46:19
【问题描述】:

我正在尝试在 Ext.js 网格中实现自定义分页,我需要根据页面大小获取表格的总记录和记录。我正在为此使用已编译的查询。

但我只想给一个数据库命中。

    List<MyTable> .GetRecordsById(Int32 ID, Int32 start, Int32 limit)
    {
        return CompliedGetRecordsById_CustomPaging(_dbNavigation, ID, start, limit).ToList();
    }

    /// <summary>
    /// Complied query for retrieving manage tasks Custom Paging
    /// </summary>
    public static readonly Func<SomeEntities, Int32,Int32, Int32, IQueryable<MyTable>> CompliedGetTaskByProjectId_CustomPaging =
        CompiledQuery.Compile<SomeEntities, Int32, Int32, Int32, IQueryable<MyTable>>((dbNavigation, ID, start, limit) =>
                                        dbNavigation.SiteTasksMappings.Include("TaskMaster")
                                        .Where(x=> x.myTableID == ID && x.STMIsActive == 1).OrderBy(x=>x.STMID).Skip(start).Take(limit));

这只会根据参数给出记录, 我想从这里返回总记录和自定义记录数

【问题讨论】:

    标签: .net entity-framework c#-4.0 extjs compiled-query


    【解决方案1】:

    我猜你正在使用 MS-SQL Server?好吧,这是无法做到的。您至少需要一个子选择来计数。但这会导致您获得一种丑陋的匿名结果类型。

    我建议您为此类表编写一个视图,该视图会添加一个总计数字段。请注意,MS SQL Server 支持仅针对一张表的视图的写操作。如果你有更简单的写一些存储过程并将它们分配给视图的实体模型。

    【讨论】:

    • 感谢您的回复,我已尝试参考此答案(stackoverflow.com/questions/7767409/…),因为我没有 SQL 探查器,但我无法验证它,它只给了一次点击
    • @Rex 好吧,看看查询优化器对查询做了什么以及它是如何执行的......无论如何,我的意思是在这种情况下你应该使用视图。如果您使用子选择或分组,现在由您决定。关键是数据库(甚至您)可以在早期优化查询。您的查询在某些时候对于数据库来说总是新的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多