2013-11-27 52 views
2

我想在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)); 

这只只会根据参数给出记录, 我想从这里

回答

3

我猜你返回的总记录数和自定义没有记录使用MS-SQL服务器?那么这是不能做到的。你至少需要一个子选项来计数。但是这会导致你的匿名结果类型很丑陋。

我建议你为这样的表格写一个视图,它增加了一个总计数字段。请注意,MS SQL Server支持只针对一个表的视图的写入操作。如果你有更多的简单的写一些存储过程,并将它们分配给视图的实体模型。

+0

感谢您的回复,我已经尝试参考此答案(http://stackoverflow.com/questions/7767409/better-way-to-query-a-page-of-data-and-get-total -count-in-entity-framework-4-1),因为我没有SQL分析器,虽然我无法验证它,但它只给出一个命中 – Rex

+1

@Rex好了,看看查询优化器用查询以及它的执行情况......无论如何,我的观点是你应该在这种情况下使用views。如果您正在使用子选择或分组,现在就由您决定。关键是数据库(甚至你)可以在早期状态下优化查询。您的查询在某些时候对数据库来说总是新的 – sra