LINQ to SQL 是第一種由 Microsoft 發行的物件關係型對應技術。 它在基本場景中運作良好,而且會在 Visual Studio 中繼續受到支援,但已經停止積極開發。 維護已使用它的舊版應用程式,或在使用 SQL Server 且不需要多重數據表對應的簡單應用程式中,請使用 LINQ to SQL。 一般而言,當需要對象關係型對應層時,新的應用程式應該使用 Entity Framework。
安裝 LINQ to SQL 工具
在 Visual Studio 中,您會使用 物件關係型設計工具 建立 LINQ to SQL 類別(O/R 設計工具)。 O/R 設計工具是用來編輯 .dbml
檔案的 UI。 使用設計介面編輯 .dbml
檔案需要 LINQ to SQL 工具,而這些工具並未隨 Visual Studio 的任何工作負載項目預設安裝。
若要安裝 LINQ to SQL 工具,請啟動 Visual Studio 安裝程式,選擇 [修改],然後選取 [個別元件] 索引卷標,然後選取 [LINQ to SQL 工具]Code Tools 類別下。
什麼是 O/R 設計工具
O/R 設計工具 在其設計介面上有兩個不同的區域:左側的實體窗格,以及右邊的方法窗格。 [實體] 窗格是顯示實體類別、關聯和繼承階層的主要設計介面。 方法窗格是用來顯示映射到預存程序和函式的 DataContext 方法的設計介面。
O/R 設計工具 提供可視化設計介面,以建立以資料庫中對象為基礎的 LINQ to SQL 實體類別和關聯性。 換句話說,O/R 設計工具 會在對應至資料庫中物件的應用程式中建立物件模型。 它也會產生強類型的 DataContext,在實體類別與資料庫之間傳送和接收資料。 O/R 設計工具 也提供將預存程式和函式對應至傳回數據和填入實體類別 DataContext 方法的功能。 最後,O/R 設計工具 可讓您設計實體類別之間的繼承關聯性。
開啟 O/R 設計工具
若要將 LINQ to SQL 實體模型新增至專案,請選擇 [專案]>[新增專案],然後從專案專案清單中選取 [LINQ to SQL 類別:
Visual Studio 會建立 .dbml
檔案,並將其新增至您的解決方案。 這是 XML 對應檔及其相關的程式碼檔案。
當您選取 .dbml
檔案時,Visual Studio 會顯示 O/R 設計工具 介面,可讓您以可視化方式建立模型。 下圖顯示將 Northwind Customers
和 Orders
數據表從 伺服器總管拖曳之後的設計工具。 請注意數據表之間的關聯性。
重要
O/R 設計工具 是簡單的物件關係對應程式,因為它只支援 1:1 對應關聯性。 換句話說,實體類別只能有與資料庫數據表或檢視表的 1:1 對應關聯性。 不支援將實體類別對應至聯結數據表等複雜對應;使用 Entity Framework 進行複雜的對應。 此外,設計師是一個單向程式碼生成器。 這表示只有您對設計工具介面所做的變更才會反映在程式碼檔案中。 手動變更程式碼檔案不會反映在 O/R 設計工具中。 儲存設計工具並重新生成程式碼時,您在程式碼檔案中手動進行的任何變更都將被覆寫。 如需如何新增使用者程式代碼及擴充 O/R 設計工具所產生的類別的詳細資訊,請參閱 如何:擴充 O/R 設計工具所產生的程式代碼。
建立及設定 DataContext
在專案中加入 LINQ to SQL 類別 項目並開啟 O/R 設計工具之後,空的設計介面表示一個準備好設定的空白 DataContext。 DataContext 會根據第一個被拖曳到設計表面的項目所提供的連接資訊進行配置。 因此,DataContext 是使用從第一個項目放入設計介面的連線資訊來設定。 如需 DataContext 類別的詳細資訊,請參閱 DataContext 方法 (O/R Designer)。
建立對應至資料庫數據表和檢視的實體類別
您可以將資料庫數據表和檢視從 伺服器總管 或 資料庫總管 拖曳到 O/R 設計工具,以建立對應至數據表和檢視的實體類別。 如上一節所述,DataContext 會配置由第一個被拖曳到設計介面上的項目所提供的連接資訊。 如果後續使用不同連接的專案新增至 O/R 設計工具,您可以變更 DataContext的連接。 如需詳細資訊,請參閱 如何:建立對應至數據表和檢視表的 LINQ to SQL 類別(O/R 設計工具)。
建立呼叫儲存程序和函數的 DataContext 方法
您可以將預存程式和函式從 DataContext 或 資料庫總管 拖曳到 O/R 設計工具,以建立 方法。 預存程式和函式會新增至 O/R 設計工具 做為 DataContext的方法。
注意
當您將預存程式和函式從 伺服器總管 或 資料庫總管 拖曳到 O/R 設計工具時,產生的 DataContext 方法的傳回類型會根據您卸除專案的位置而有所不同。 如需詳細資訊,請參閱 DataContext 方法 (O/R 設計工具)。
設定 DataContext 以使用預存程式在實體類別與資料庫之間儲存數據
如先前所述,您可以建立呼叫預存程式和函式的 DataContext 方法。 此外,您也可以指派用於預設 LINQ to SQL 執行時間行為的預存程式,以執行插入、更新和刪除。 如需詳細資訊,請參閱 如何:指派預存程式來執行更新、插入和刪除 (O/R 設計工具)。
繼承和 O/R 設計器
如同其他物件,LINQ to SQL 類別可以使用繼承,並衍生自其他類別。 在資料庫中,會以數種方式建立繼承關聯性。 O/R 設計工具 支援單一數據表繼承的概念,因為它通常會在關係型系統中實作。 如需詳細資訊,請參閱 如何:使用 O/R 設計工具設定繼承。
LINQ to SQL 查詢
O/R 設計工具 所建立的實體類別是設計來搭配 Language Integrated Query (LINQ)使用。 如需詳細資訊,請參閱 如何:查詢的資訊。
將產生的 DataContext 和實體類別程式代碼分成不同的命名空間
O/R 設計工具 會在 上提供 Context Namespace 和 DataContext 属性。 這些屬性決定了 DataContext 和實體類類別代碼將產生到哪個命名空間。 根據預設,這些屬性是空的,DataContext 和實體類別會產生至應用程式的命名空間。 若要將程式代碼產生至應用程式命名空間以外的命名空間,請在 Context Namespace 和/或 Entity Namespace 屬性中輸入值。