關於在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條件來排序,以保證查詢數據的正確性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章