在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条件来排序,以保证查询数据的正确性

关于在webapi + ef + 视图 + top查询的问题的更多相关文章

  1. EF 视图查询坑

    EF 视图在查询的时候如果主键一样则默认的数据都是第一条查询的数据

  2. SQL语法精讲(包括建库、建表、建视图、查询、增加、删除、)

    SQL语法精讲(包括建库.建表.建视图.查询.增加.删除.修改) SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELE ...

  3. SQL Server索引视图以(物化视图)及索引视图与查询重写

    本位出处:http://www.cnblogs.com/wy123/p/6041122.html 经常听Oracle的同学说起来物化视图,物化视图的作用之一就是可以实现查询重写,听起来有一种高大上的感 ...

  4. [翻译 EF Core in Action 2.3] 理解EF Core数据库查询

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  5. [转载]EF或LINQ 查询时使用IN并且根据列表自定义排序方法

    原文地址:EF或LINQ 查询时使用IN并且根据列表自定义排序方法作者:李明川 EF和LINQ改变了原有的手写SQL时期的一些编码方法,并且增强了各数据库之间的移植性简化了开发时的代码量和难度,由于很 ...

  6. EF 跨库查询

    原因:最近公司项目,遇到一个ef跨库查询的问题.(只是跨库,并不是跨服务器哈) 主要我们的一些数据,譬如地址,城市需要查询公共资料库. 但是本身我的程序设计采用的是ef框架的.因此为这事花费了1天时间 ...

  7. EF或LINQ 查询时使用IN并且根据列表自定义排序方法

    EF和LINQ改变了原有的手写SQL时期的一些编码方法,并且增强了各数据库之间的移植性简化了开发时的代码量和难度,由于很多人不熟,经常会碰到一些写SQL语句时经常会用到的一些方法,而使用EF或LINQ ...

  8. .net core webapi+EF Core

    .net core webapi+EF Core 一.描述: EF Core必须下载.net core2.0版本 Micorsoft.EntityFrameworkCore:EF框架的核心包Micor ...

  9. ORA-01219:数据库未打开:仅允许在固定表/视图中查询

    好久没有登陆到Oracle的服务器了,把密码都忘记了.sql>conn sys/sys as sysdba;sql>alter user system identified by *;结果 ...

随机推荐

  1. ringbuffer

    http://blog.csdn.net/xiaolang85/article/details/38419163

  2. CentOS 5.8 安装python 和 yum

    centos 5.8  资源路径: http://vault.centos.org/5.8/os/x86_64/CentOS/ rpm -Uvh http://vault.centos.org/5.8 ...

  3. 【洛谷 P4568】 [JLOI2011]飞行路线 (分层最短路)

    题目链接 分层图最短路. 把每个点拆成\(k+1\)个点,表示总共有\(k+1\)层. 然后每层正常连边, 若\((u,v)\)有边,则把每一层的\(u\)和下一层的\(v\).每一层的\(v\)和下 ...

  4. [bzoj1070] 修车

    这周学习了费用流,就写了几题.其中有一题就是bzoj上的修车,看起来很丧,交了6次都是除了样例全wa(事实证明样例说明不了什么,还会误导你……). 题目大意:有m个技术人员n辆车,一个技术人员只能同时 ...

  5. 直接在注册DB服务的时候,做beforeQuery事件监听

  6. 简谈const限定符

    const修饰的数据类型是常量类型,常量类型的对象和变量在定义初始化后是不能被更新的.其实只用记住这一个概念,就可以明白const操作对象的方法. 1)定义const常量 最简单的: const in ...

  7. TCP之connect

    1. connect函数: #include <sys/socket.h> int connect(int sockfd, const struct sockaddr *servaddr, ...

  8. python基础===isinstance() 函数,判断一个对象是否是一个已知的类型

    isinstance(object, classinfo) object -- 实例对象. classinfo -- 可以是直接或间接类名.基本类型或者有它们组成的元组. >>>a ...

  9. vsftp 服务的启动与问题

    一般系统用户是可以直接登入的如果不可以可能是selinux的原因 执行一下: 更改selinux的配置文件将其设为disable,可我不想重启服务器,有以下解决办法:执行命令:setenforce 0 ...

  10. UNIX v6

    UNIX v6 http://download.csdn.net/download/u013896535/9106775 https://github.com/chromium/mini_chromi ...