zoukankan      html  css  js  c++  java
  • 关于在webapi + ef + 视图 + top查询的问题

    在ef中使用视图中有一种坑是视图没有主键,表现的形式是有些数据会出现重复,解决的方法是手动在视图中添加主键即可

    在实际的项目中碰到另一种坑,即使用webapi查询时的一种,现记录情况如下:

    1:随便创建一个视图

    create view v_1 as

    select id,name,time from table order by field desc

    2: 在webapi项目中使用ef链接数据库自动生成v_1的模型

    3:编写controller代码

        [EnableQuery]
            public IQueryable<v_1> Get()
            {return EFHelper.Query<v_1>();
            }

    4: 前端直接调用接口 localhost:port/api/v_1出现结果

    程序到这里一切正常,数据正确返回,并且按照视图中的order by正确排序

    现在加上条件查询,top参数如:localhost:port/api/v_1?$top=10,就会发现数据返回的数量正确,但是排序却变了

    全部查询时的数据和排序都是正确的,但是加上top后排序就出现错误,那么问题肯定出现在ef框架自动为我们生成的sql中了

    调取数据库记录发现执行的sql语句如下:

    select  id,name,time from v_1 order by id,name,time limit 10

    (其中字段按照字母顺序a-z排序,实际结果可能不是我给出的这样)

    开发环境:vs2015 , .net framework 4.5.2 ,ef 5.0 , mysql 

    网上搜索答案,没有找到相似的问题,由于项目时间原因,先此记录一下,也希望碰到此问题的朋友能提供一个解决方案

    最后问题并没有从实际解决,我只是在调用接口的时候,强制加上orderby条件来排序,以保证查询数据的正确性

  • 相关阅读:
    【Linux】PuTTY----------windows访问Linux 快捷方便
    接口测试、概念及常用方法小结
    设计模式
    事务
    Struts2技术详解
    message from server: "Host 'xxx' is not allowed to connect to this MySQL server的解决
    Java中多态性的实现
    应用上下文webApplicationContext
    ubuntu 12.04下访问windows共享文件夹
    排序问题分析
  • 原文地址:https://www.cnblogs.com/liumang/p/6110407.html
Copyright © 2011-2022 走看看