MS SQL 使用 PK 條件卻查到多筆資料

System.InvalidOperationException: Sequence contains more than one element

問題發生點:

System.InvalidOperationException: Sequence contains more than one element

Generated: Mon, 13 Mar 2023 04:28:17 GMT

System.InvalidOperationException: Sequence contains more than one element

   at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)

使用 PK 欄位作為 WHERE 條件時,查詢結果竟然出現多筆資料,導致 PetaPOCO 的 SingleOrDefault 拋出上述錯誤。初步判斷發生在 JOIN;同步作業或其他資料表正在 INSERT、UPDATE 時,可能讓查詢取得兩筆資料。

解決方式:

1. 每個 JOIN 的資料表都加上 WITH(NOLOCK);原本只在 FROM 的第一個 Table 使用。

2. 補上更明確的 WHERE 條件。

Author image
關於 Richard Zheng
About me 喜歡爬山,瑜伽,溜冰,喜歡新奇的事,最喜歡的還是寫程式帶來的成就感,對於資訊會不斷的出現新事物也能抱持好奇與熱忱。近期開始將學習的心得寫在Blog,發現思路更清晰也加深了記憶。 紙上得來終覺淺,絕知此事要躬行