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