台灣最大程式設計社群網站
線上人數
645
 
會員總數:245112
討論主題:189027
歡迎您免費加入會員
討論區列表 >> ASP.NET >> ASP.NET EF6 使用Linq撈資料錯誤
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ASP.NET EF6 使用Linq撈資料錯誤
價值 : 40 QP  點閱數:97 回應數:5

樓主

Sean Cheng
門外漢
0 3
56 10
發送站內信

我使用ASP.NET EF6 透過Linq撈MS-SQL的View 不知為何鬼打牆一直錯誤
後來使用LinqPad去測試直接SQL Select結果是正確的
如果LinqPad直接connect資料庫下Linq語法結果也正確
但如果透過Entities connect去查詢就會錯誤,實在是鬼打牆不知問題出在哪

我的VIEW結構


直接SQL Select結果是正確的


LinqPad直接connect資料庫下Linq語法結果也正確


透過Entities connect去查詢就會錯誤


Linq轉譯出來的SQL,用這串去Select結果也是對的


搜尋相關Tags的文章: [ ASP.NET EF6 ] , [ Linq ] ,
本篇文章發表於2019-11-06 01:13
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

pilipala
檢舉此回應
透過Entities connect去查詢就會錯誤


這張圖片好像傳錯了,看不到錯誤訊息
本篇文章回覆於2019-11-06 09:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Sean Cheng
檢舉此回應
沒有傳錯錯誤的資料PRD_NO & PRD_NAME兩筆資料都相同
正確結果是兩個不同
本篇文章回覆於2019-11-06 16:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
不知道是否相關
建議您把ASP.NET的專案作『重新建置』
讓他建置的dll確定重新產生
之後再次執行(執行前也請先把IIS Express關閉)

以確保不會跑到與目前看到的程式碼不一致的可能

然後看看結果是否正確
^.^a
本篇文章回覆於2019-11-08 09:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

pilipala
檢舉此回應
了解意思,以為是有拋出 Exception

使用 TSQL TOP 語法,請一定要搭配 Order By 使用,這樣才能確保回傳的資料是一致的,這一點在 MS Doc 上也有提到

MS Doc 摘錄 - 詳見:TOP (Transact-SQL)

當您搭配 ORDER BY 子句使用 TOP 時,結果集會限制為前 N 個已排序資料列。 否則,TOP 會以未定義的順序傳回前 N 個資料列


以上純猜測,加上 Order By 試看看吧
本篇文章回覆於2019-11-08 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Sean Cheng
檢舉此回應
感謝各位的回應
首先 我已經試過將整個方案清除再重建 IIS Express也重啟過 依然無效

另外我也嘗試在View中加入order by & Linq查詢也用order by 依然無效


補充一下因為專案上需要關聯到在同一台SQL上的兩個資料庫
如下圖DB_A(My_Buy) & DB_B(DB_TISI),我在測試中將A資料庫中建立View 去讀取B資料庫的數據
神奇的只有在EF會錯誤,Linq直接呼叫這個View OR SQL呼叫都是正常的


另外如果我EF直接去存取B資料庫的資料結果也是對的
本篇文章回覆於2019-11-08 14:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.