连接ACCESS数据库时,查询使用take查询报错 返回

SqlSugar 处理完成
27 532

正常查询没有问题,但使用take的时候就报错

Exception: System.Exception: sqlite page need primary key , entity name: Trade
在 SqlSugar.Access.AccessQueryBuilder.ToSqlString()
在 SqlSugar.QueryableProvider1._ToSql() 在 SqlSugar.QueryableProvider1.ToSql()
在 SqlSugar.QueryableProvider1.ToSql() 在 SqlSugar.QueryableProvider1.ToDataTable()

我是单表查询

SqlSugar 版本 5.1.4.157


SqlSugar.Access 版本: 5.1.4.143


数据库连接字符串


Provider=Microsoft.Jet.OleDb.4.0;Data Source={host};Jet OLEDB:Database Password='{pass}';


数据库版本: 2002-2003文件格式

热忱回答27

  • 我测试是可以的,需要提供DEMO,也可能是你的版本太低了 我这边Microsoft.ACE.OleDB.16.0

    0 回复
  • 我用的4.0的 

    0 回复
  • ConsoleApp1.zip


    给你提供一个demo,我这边运行是报错的  你可以看看

    0 回复
  • 写原生sql 是可以执行的,我这边测试过

    0 回复
  • @☆№^※§:ORM也只是执行SQL,你试试 db.ado.sqlquery<T>("select xxxx" ) 用SQL试试 看一下2者SQL有没有差异

    0 回复
  • 好像确实存在BUG我这个处理一下

    0 回复
  • 我测试了原生也不行。只要有orderby就 top就失效

    0 回复
  •  var xx=db.Queryable<Order>().OrderBy(it=>it.Id).Skip(0).Take(20).ToList();


    只支持主键排序

    0 回复
  • 我这边目前用的这种方式执行的,是可以的,你这边修复好后发包回复一下

    var dt=db.Ado.GetDataTable("select top 100 * from table order by id ",


    0 回复
  • 更新过了,只能主键排序take

    0 回复
  • 不能添加其它排序支持吗?   原生sql是可以支持各种排序的  

    0 回复
  • 目前take是可以了  ,但排序确实不行,这样也影响正常使用,还是得写原生sql

    0 回复
  • @☆№^※§:有Take 我原生SQL都不支持非主键之外的排序,你是怎么做到支持的。

    0 回复
  • 还是说你只是排序不进行TAKE

    0 回复
  • 我这边测试一切正常,还有疑问提供可以的SQL和不可以的代码

    0 回复
  • 你给的SQL是按主键排序的,所以ORM也是支持的,你可以用SQL按非主键进行测序测试

    ACCESS中

    只要有

    top+非主键排序 ,结果都是错的

    0 回复
  • 在我发的demo中,只要添加排序执行就会报错,只是Take可以执行,执行原生sql就可以

      var dt = ins.Ado.GetDataTable("select top 100 * from Trade  order by LastDateTime desc,id desc");

    这句执行就没有问题

    0 回复
  • @☆№^※§:我知道了你排序中包含了主键

    0 回复
  • 我看一下

    0 回复
  • -

    0 回复
  • image.png

    我测试了只要带上主键排序都对的

    0 回复
  • 排序一样要带上主键

    0 回复
  • image.png


    是我的数据库版本比较低的原因?  您这边用我的demo试试能不能运行

    0 回复
  • @☆№^※§: 你实体没有配置主键 

    0 回复
  • image.png

    这个?

    0 回复
  • webfirst里面为什么没有自动添加主键?   没有主键为啥就不行

    0 回复
  • 可以了   我这边数据库设置未设置主键  谢谢

    0 回复