[英]LINQ Query returns multiple copies of first result
我有一個在數據庫中定義的視圖(archiveContentPreviews),它將幾個表連接在一起,在Linq中它有一個實體鍵(ArchiveID),我想用這個簡單的查詢查詢這個視圖:
var x = from fields in entities2.archiveContentPreviews
where fields.ArchiveID == archiveID
select fields;
return x.ToList<archiveContentPreview>();
它返回確切的結果數但是第一個結果的多個副本的問題,當我在SQL管理工作室中執行該查詢時,它返回正確的結果,任何幫助?!
當指定為主鍵的列(或列)在視圖中沒有唯一值時,通常會發生這種情況。 在您的情況下, ArchiveID
可能在大量視圖行中重復(也由where
子句指示)。 您必須找到(或添加到視圖)列的組合,這些列唯一地標識視圖行並在EF模型中將它們標記為主鍵。
請注意,生成的SQL查詢返回的數據可能包含具有不同值(但具有相同的ArchiveID
)的行,但EF只是為每個ArchiveID
實現實體對象,並且可以為該ID找到第一個結果。
請注意一種解決方法(如果您不能指定其他密鑰 - 例如,對於您不管理的數據表但只是只讀訪問權限等)是選擇查詢中的各個列。
var x = from fields in entities2.archiveContentPreviews
where fields.ArchiveID == archiveID
select new {fields.col1, fields.col2};
return x.ToList<archiveContentPreview>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.