Visual Studio 中的 LINQ to SQL 工具
LINQ to SQL 是第一種由 Microsoft 發行的物件關係型對應技術。 它在基本的情境中運作良好,並在 Visual Studio 中持續受到支援,但已不再積極開發中。 在維護已經使用 LINQ to SQL 的舊版應用程式時,或在使用 SQL Server 且不需要多表對應的簡單應用程式中,請使用 LINQ to SQL。 一般而言,當需要對象關係型對應層時,新的應用程式應該使用 Entity Framework。
安裝 LINQ to SQL 工具
在 Visual Studio 中,您會使用 物件關係設計工具(O/R 設計工具)來建立代表 SQL 資料表的 LINQ to SQL 類別。 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 方法
您可以從 伺服器總管 或 資料庫總管 將預存程式和函式拖曳到 O/R 設計工具,以建立可呼叫這些項目的 DataContext 方法。 預存程式和函式會新增至 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 設計工具 會在 DataContext上提供 Context Namespace 和 Entity Namespace 属性。 這些屬性決定了 DataContext 和實體類別代碼生成的命名空間。 根據預設,這些屬性是空的,DataContext 和實體類別會產生至應用程式的命名空間。 若要將程式代碼產生至應用程式命名空間以外的命名空間,請在 Context Namespace 和/或 Entity Namespace 屬性中輸入值。