FineUI 官方论坛

标题: subsonic进行多表关联查询时出现的查询结果不对的问题 [打印本页]

作者: 唐铁明    时间: 2012-12-22 09:02
标题: subsonic进行多表关联查询时出现的查询结果不对的问题
SqlQuery q = new Select(XSmsSend.SendUserColumn, XSmsSend.SendTimeColumn, XSmsSend.SendContentColumn, XSmsSend.ReceiveUNameColumn, XSmsSend.ReceiveNumberColumn, XSmsDetail.GuidIdColumn, XSmsDetail.ReasonColumn, XSmsDetail.SendCountColumn, XSmsDetail.SentTimeColumn).From<XSmsDetail>().InnerJoin(XSmsSend.GuidIdColumn, XSmsDetail.GuidIdColumn);
           // q.Where("1").IsEqualTo("1");
            // 在公司名称中搜索
            string searchText = ttbSearchMessage.Text.Trim();
            if (!String.IsNullOrEmpty(searchText))
            {
                q.And(XSmsSend.ReceiveNumberColumn).ContainsString(searchText);
            }
            
            // 在查询添加之后,排序和分页之前获取总记录数
            // Grid1总共有多少条记录
            Grid1.RecordCount = q.GetRecordCount();
          备注:此处查询的结果和实际的结果值相同如3条,
           
            
            // 排列
            //q.OrderBys.Add(GetSortExpression(Grid1, XUser.Schema));
            // 数据库分页
            q.Paged(Grid1.PageIndex + 1, Grid1.PageSize);
            XSmsSendCollection items = q.ExecuteAsCollection<XSmsSendCollection>();
        //此处查询得到的集合的记录是9条,这个是否是subsonic的bug还是我写的有问题


作者: 唐铁明    时间: 2012-12-22 12:15
DECLARE @Page int
DECLARE @PageSize int

SET @Page = 1
SET @PageSize = 20

SET NOCOUNT ON

-- create a temp table to hold order ids
DECLARE @TempTable TABLE (IndexId int identity, _keyID VarChar(50))

-- insert the table ids and row numbers into the memory table
INSERT INTO @TempTable
(
  _keyID
)
SELECT
[dbo].[X_SmsSend].[SendUser]
     FROM [dbo].[X_SmsDetail]
INNER JOIN [dbo].[X_SmsSend] ON [dbo].[X_SmsDetail].[GuidId] = [dbo].[X_SmsSend].[GuidId]
WHERE 1 = @10

                        
-- select only those rows belonging to the proper page
    SELECT [dbo].[X_SmsSend].[SendUser], [dbo].[X_SmsSend].[SendTime], [dbo].[X_SmsSend].[SendContent], [dbo].[X_SmsSend].[ReceiveUName], [dbo].[X_SmsSend].[ReceiveNumber], [dbo].[X_SmsDetail].[GuidId], [dbo].[X_SmsDetail].[Reason], [dbo].[X_SmsDetail].[SendCount], [dbo].[X_SmsDetail].[SentTime]
FROM [dbo].[X_SmsDetail]
INNER JOIN [dbo].[X_SmsSend] ON [dbo].[X_SmsDetail].[GuidId] = [dbo].[X_SmsSend].[GuidId]

INNER JOIN @TempTable t ON [dbo].[X_SmsSend].[SendUser] = t._keyID
WHERE t.IndexId BETWEEN ((@Page - 1) * @PageSize + 1) AND (@Page * @PageSize)
作者: 唐铁明    时间: 2012-12-22 12:17
查询出来的数据是实际数据的三倍,没办法在数据库中把表相关联的表做成了视图,通过数据库解决了,哪位知道什么问题,指导一下呀
作者: 唐铁明    时间: 2012-12-22 14:41
本帖最后由 唐铁明 于 2012-12-23 03:56 编辑

跟踪下来跟q.Paged(Grid1.PageIndex + 1, Grid1.PageSize);这一句有关,还在查找中,数据库及表内容如下:
作者: sanshi    时间: 2012-12-24 02:58
好奇怪,怎么分页记录数比总记录说还多。

你看下调用 q.Paged(Grid1.PageIndex + 1, Grid1.PageSize); 时 PageIndex 和 PageSize 分别是多少?
作者: 唐铁明    时间: 2012-12-24 03:30
我写成q.paged(1,20)也是这样
作者: sanshi    时间: 2012-12-24 13:39
也可能是 SubSonic 的BUG,你用AppBox里我修改后的Subsonic试下
作者: 唐铁明    时间: 2012-12-25 07:21
我用的就是修改后的Subsonic试的,也是有问题。
作者: 随州热线    时间: 2012-12-28 00:32
这个问题,怎么解决的?我用你的数据试了,也是一样的,9条数据,怎么回事?
作者: 梦如人生    时间: 2012-12-28 04:19
还真没那个习惯用subsonic,习惯自己写数据库组建。
作者: jiao_lp    时间: 2013-8-2 14:02
初学者对Subsonic一头雾水呀,谁能做个关于利用它进行项目开发的实例教程呀!
作者: jiao_lp    时间: 2013-8-2 14:02
初学者对Subsonic一头雾水呀,谁能做个关于利用它进行项目开发的实例教程呀!
作者: sanshi    时间: 2013-8-2 15:28
Subsonic不建议使用了:http://fineui.com/bbs/forum.php?mod=viewthread&tid=2208




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4