View的內容只是幾個Table的組合,沒有特別的地方
select COMPANY_CODE, COMPANY_NAME, GOODS from SELL_RECORD
1,蘋果, IPAD
1,蘋果, IPHONE
2.HTC, HTC ONE
在EF內則變成
2,蘋果, IPAD
2,蘋果, IPHONE
2,HTC, HTC ONE
後來查了文章 [出處1] [出處2],問題在於查詢的欄位內有COMPANY_CODE這個欄位是查詢結果相關table的第一個主索引鍵,但並不是 Query 結果的真正索引鍵。而Entity FrameWork在將查詢結果轉為物件的過程中,需要在查詢結果內找到有意義的Key值,任其自行推斷會發生恐怖的不測。
最後我們使用 SQL 2005以後即具備的 ROW_NUMBER 方式幫記錄排序,並產生流水序號CID供EF判斷。也別忘了在EF的模型檢式介面,手動將此欄位設定為主索引鍵並重新建置,才能發揮作用。
ROW_NUMBER() OVER(ORDER BY SomeValue) AS CID