求助:代码返回数据行数和生成的sql拿到数据库工具(navicat)执行数据行数不一致,相差3000多行。 返回

SqlSugar
9 107
该叫什么 Yun 发布于2周前
悬赏:5 飞吻

                数据库类型 :SQLite   



periodBalanceVo.Extends = await db.Queryable<Vou, VouDetail, VouExtend>

                    ((av, avd, ave) => av.Id == avd.VoucherId && avd.Id == ave.VoucherDetailId)

                    .Where((av, avd, ave) => av.VoucherDate >= beginDate && av.VoucherDate <= endDate)

                    .GroupBy((av, avd, ave) => new

                    {

                        avd.OriginalId,

                        avd.Number,

                        avd.Name,

                        ave.ExtendFieldCode,

                        ave.ExtendFieldName,

                        ave.SegmentValue,

                        ave.SegmentName

                    })

                    .Select((av, avd, ave) => new AccountingPeriodExtend

                    {

                        OriginalId = avd.OriginalId,

                        ExtendFieldCode = ave.ExtendFieldCode,

                        ExtendFieldName = ave.ExtendFieldName,

                        SegmentValue = ave.SegmentValue,

                        SegmentName = ave.SegmentName,

                        OriginalAccountNumber = avd.Number,

                        OriginalAccountName = avd.Name

                    })

                    .ToListAsync();


热忱回答9

  • ORM 返回数量只和你的SQL有关系

    0 回复
  • 用Queryable.Count()进行测试

    0 回复
  • Yun Yun VIP0
    2周前

    @fate staQueryable.Count() =23387    上面Queryable生成的SQL复制到 Navicat 执行,结果行数:20803

    0 回复
  • @Yun:Count是SQL执行的结果,那只能是SQL差异或者库有差异

    0 回复
  • 如果还有疑问提供完整DEMO,带上数据库

    0 回复
  • Yun Yun VIP0
    2周前

    有人在SQLite类数据库使用sqlsugar遇到同样问题吗,求解答。使用生成的sql,这样执行返回的行数和Navicat执行结果行数是一致的

    /原生SQL用实体 sql 查询
    List<ClassA> t=db.Ado.SqlQuery<ClassA>(sql);//比db.SqlQueryable兼容性更强,支持复杂SQL存储过程,缺点没有自带的分页操作


    0 回复
  • @Yun:那就是参数化和非参数化的问题,当数据库存在错误格式时间会出现时间过滤出问题

    0 回复
  •      .Where((av, avd, ave) =>convert.ToDateTime( av.VoucherDate )>= convert.ToDateTime( beginDate )

    &&convert.ToDateTime(  av.VoucherDate) <= onvert.ToDateTime( endDate))  你可以给条件2边都加上转换保证格式一样

    0 回复
  • Yun Yun VIP0
    2周前

    @fate sta:谢谢你。是这样问题。跟sqlsugar无关,根本原因是sqlite

    对日期查询格式的要求

    image.png

    0 回复