簡體   English   中英

LINQ Query返回第一個結果的多個副本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM