Dot-Net

實體框架 4 Single() vs First() vs FirstOrDefault()

  • August 14, 2010

我正忙著尋找查詢單個項目的不同方法以及何時使用每種方法的比較。

有沒有人有一個連結來比較所有這些,或者快速解釋為什麼你會使用一個而不是另一個?還有更多我不知道的運營商嗎?

謝謝你。

以下是不同方法的概述:

  • Find() - 當您想通過主鍵獲取項目時。如果找不到項目,這將返回 null。它會在訪問數據庫之前先查看上下文(正如 Yaron 在評論中指出的那樣),如果您需要在同一個上下文處於活動狀態時多次獲取同一個實體,這可能是一個重要的效率因素。
  • Single() - 當您期望查詢只返回一個項目時。如果查詢不只返回一項,這將引發異常。
  • SingleOrDefault() - 當您期望查詢返回零個或一個項目時(即您不確定具有給定鍵的項目是否存在)。如果查詢不返回零個或一個項目,這將引發異常。
  • First() - 當您希望查詢返回一個或多個項目但您只想訪問程式碼中的第一個項目時(排序在此處的查詢中可能很重要)。如果查詢未返回至少一項,這將引發異常。
  • FirstOrDefault() - 當您希望查詢返回零個或多個項目但您只想訪問程式碼中的第一個項目時(即您不確定是否存在具有給定鍵的項目)

引用自:https://stackoverflow.com/questions/3485317