2009-12-18 78 views
1

我在去年一直使用LINQ to SQL,並且沒有任何問題。我決定,我想在一個項目上試驗EntityFramework,這個項目的要求是從客戶數據庫中的幾個視圖返回一些原始數據。我創建了實體模型,包括視圖,但是當我編寫查詢以返回特定值的不同行時,返回了重複項。LINQ to ENTITIES DISTINCT在LINQ TO SQL按預期工作時返回重複項

將EntityKey設置爲true的唯一列是PWSID,但該列包含大量重複項。下面是我的查詢:

int[] pwsIds = (from attribs in db.VW_DOR_ParcelAttribs_All 
       select attribs.PWSID).Distinct().ToArray(); 

我創建了一個LINQ to SQL數據模型,並使用相同的查詢,並一切正常。我沒有對任何數據模型進行任何更改。

我曾嘗試將EntityKey屬性的值設置爲false,但後來出現編譯器錯誤。我無法控制客戶的桌子。真的沒有一個獨特的關鍵。

對於這個應用程序LINQ to SQL是可以接受的,並且效果很好,但我試圖更好地理解我在將來需要使用實體框架時做了什麼錯誤。任何見解都會被讚賞。

回答

3

EntityKey應該設置在保證在該表中唯一的屬性或屬性組合中。我猜EF正在優化.Distinct(),因爲它假設項目不能包含重複項。

+1

這聽起來很合理。 – Rick 2009-12-18 21:56:55