LINQ to SQL 查詢
更新: November 2007
使用與 LINQ 相同的語法,就可以定義 LINQ to SQL 查詢。唯一的差別在於查詢中參考的物件會對應至資料庫中的項目。如需詳細資訊,請參閱 LINQ 查詢簡介。
LINQ to SQL 會將您撰寫的查詢轉譯為對等 SQL 查詢,並將它們傳送給伺服器進行處理。更精確的說,應用程式會使用 LINQ to SQL API 來要求執行查詢。LINQ to SQL 提供者接著會將查詢轉換為 SQL 文字,並將執行委派給 ADO 提供者。而 ADO 提供者會將查詢結果傳回為 DataReader。然後,LINQ to SQL 提供者會將 ADO 結果轉譯為使用者物件的 IQueryable 集合。
下圖描述這個一般流程。
查詢執行圖表
注意事項: |
---|
.NET Framework 內建型別的大部分方法和運算子都可以直接轉譯為 SQL。LINQ 無法轉譯的部分則會產生執行階段例外狀況 (Exception)。如需詳細資訊,請參閱SQL-CLR 型別對應 (LINQ to SQL)。 |
下表顯示 LINQ 與 LINQ to SQL 查詢項目之間的相似及差異部分。
項目 |
LINQ 查詢 |
LINQ to SQL 查詢 |
---|---|---|
保留查詢之區域變數的傳回型別 (適用於傳回序列的查詢) |
泛型 IEnumerable |
泛型 IQueryable |
指定資料來源 |
使用 From (Visual Basic) 或 from (C#) 子句 |
相同 |
篩選 |
使用 Where/where 子句 |
相同 |
群組 |
使用 Group…By/groupby 子句 |
相同 |
選取 (投影) |
使用 Select/select 子句 |
相同 |
延後執行與立即執行 |
請參閱LINQ 查詢簡介 |
相同 |
實作聯結 (Join) |
使用 Join/join 子句 |
可以使用 Join/join 子句,但是使用 AssociationAttribute 屬性 (Attribute) 會更具效率。如需詳細資訊,請參閱跨關聯性查詢 (LINQ to SQL)。 |
遠端執行與本機執行 |
|
如需詳細資訊,請參閱遠端和本機查詢執行的比較 (LINQ to SQL)。 |
資料流 (Streaming) 與快取查詢 |
不適用於本機記憶體案例 |
|