共用方式為


LINQ 和 ADO.NET

現今,許多商務開發人員必須使用兩種(或更多)程式設計語言:商業規則和呈現層的高階語言(例如 Visual C# 或 Visual Basic),以及與資料庫互動的查詢語言(例如 Transact-SQL)。 這需要開發人員熟悉數種語言才能有效,也會導致開發環境中的語言不符。 例如,使用資料存取 API 對資料庫執行查詢的應用程式會使用引號,將查詢指定為字串常值。 此查詢字串無法讀取至編譯程式,而且不會檢查是否有錯誤,例如無效的語法,或它參考的數據行或數據列是否確實存在。 沒有查詢參數的類型檢查,也沒有 IntelliSense 支援。

Language-Integrated Query (LINQ) 可讓開發人員在其應用程式程式代碼中形成以集合為基礎的查詢,而不需要使用不同的查詢語言。 您可以針對各種可列舉數據源撰寫 LINQ 查詢(也就是實作 介面的 IEnumerable 數據源),例如記憶體內部數據結構、XML 檔、SQL 資料庫和 DataSet 物件。 雖然這些可列舉的數據源會以各種方式實作,但它們都會公開相同的語法和語言建構。 因為查詢可以用程式設計語言本身來形成,所以您不需要使用另一種內嵌為字元串常值,編譯程式無法理解或驗證的查詢語言。 將查詢整合到程式設計語言中,也可讓Visual Studio程式設計人員藉由提供編譯時間類型和語法檢查,以及 IntelliSense來提高生產力。 這些功能可減少查詢偵錯和錯誤修正的需求。

將數據從 SQL 資料表傳輸到記憶體中的物件通常很乏味且容易出錯。 LINQ to DataSet 和 LINQ to SQL 所實作的 LINQ 提供者會將源數據轉換為基於IEnumerable的物件集合。 程序設計人員一律會在查詢和更新時,將數據視為 IEnumerable 集合。 提供針對這些集合撰寫查詢的完整 IntelliSense 支援。

有三種不同的 ADO.NET Language-Integrated查询 (LINQ) 技術:LINQ to DataSet、LINQ to SQL 和 LINQ to Entities。 LINQ to DataSet 提供更豐富且經過優化的查詢功能,LINQ to SQL 可讓您直接查詢 SQL Server 資料庫結構,而 LINQ to Entities 則能讓您查詢實體資料模型。

下圖概述 ADO.NET LINQ 技術與高階程式設計語言和啟用 LINQ 的數據源的關係。

LINQ to ADO.NET 概觀

如需 LINQ 的詳細資訊,請參閱 語言整合式查詢 (LINQ)

下列各節提供有關 LINQ to DataSet、LINQ to SQL 和 LINQ to Entities 的詳細資訊。

LINQ to DataSet

DataSet 是構成 ADO.NET 所建立的非連線式程式設計模型的關鍵元素,而且被廣泛使用。 LINQ to DataSet 可讓開發人員使用其他許多數據源可用的相同查詢公式機制,在 中建置更豐富的查詢功能 DataSet 。 如需詳細資訊,請參閱 LINQ to DataSet

LINQ to SQL

LINQ to SQL 是一個實用的工具,適用於不需要對應至概念模型的開發人員。 藉由使用 LINQ to SQL,您可以直接透過現有的資料庫架構使用 LINQ 程式設計模型。 LINQ to SQL 可讓開發人員產生代表數據的 .NET Framework 類別。 這些產生的類別會直接對應至資料庫數據表、檢視表、預存程式和使用者定義函式,而不是對應至概念數據模型。

使用 LINQ to SQL,開發人員除了 XML 等其他數據源之外,還可以使用與記憶體內部集合 DataSet相同的 LINQ 程式設計模式,直接針對記憶體架構撰寫程式代碼。 如需詳細資訊,請參閱 LINQ to SQL

LINQ to Entities

大部分的應用程式目前都是以關係資料庫為基礎撰寫。 在某些時候,這些應用程式必須與關係型表單中表示的數據互動。 資料庫架構不一定適合用來建置應用程式,而且應用程式的概念模型與資料庫的邏輯模型不同。 實體數據模型是概念性數據模型,可用來建立特定領域數據的模型,讓應用程式可以將數據當做對象互動。 如需詳細資訊,請參閱 ADO.NET Entity Framework

透過實體數據模型,關係型數據會公開為 .NET 環境中的物件。 這使得物件層成為 LINQ 支援的理想目標,可讓開發人員從用來建置商業規則的語言,針對資料庫制定查詢。 這項功能稱為LINQ to Entities。 如需詳細資訊,請參閱 LINQ to Entities

另請參閱