在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条件来排序,以保证查询数据的正确性
时间: 2024-10-10 10:55:29