Visual Studio 中的 LINQ to SQL 工具
LINQ to SQL 是 Microsoft 發行的第一個物件關聯式對應技術。 其在基本案例中運作良好,而且在 Visual Studio 中繼續受到支援,但不再處於積極開發狀態。 維護已使用其的舊版應用程式時,或在使用 SQL Server 且不需要多重資料表對應的簡易應用程式中,請使用 LINQ to SQL。 一般而言,當需要物件關聯式對應工具層時,新的應用程式應該使用 Entity Framework。
安裝 LINQ to SQL 工具
在 Visual Studio 中,您會使用物件關聯式設計工具 (O/R 設計工具) 建立代表 SQL 資料表的 LINQ to SQL 類別。 O/R 設計工具是用於編輯 .dbml 檔案的 UI。 使用設計工具介面編輯 .dbml 檔案,需要預設不會安裝為 Visual Studio 任何工作負載一部分的 LINQ to SQL 工具。
若要安裝 LINQ to SQL 工具,請啟動 Visual Studio 安裝程式、選擇 [修改],然後選取 [個別元件] 索引標籤,然後選取 [程式碼工具] 類別下的 [LINQ to SQL 工具]。
什麼是 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 設計工具] 是簡易的物件關聯對應工具,因為其只支援一對一對應關聯性。 換句話說,實體類別與資料庫資料表或檢視之間只可以有一對一對應關聯性。 不支援複雜對應,例如將實體類別對應至聯結資料表;使用 Entity Framework 進行複雜對應。 此外,這個設計工具是單向程式碼產生器。 這表示只有您對設計工具介面進行的變更才會反映在程式碼檔案中。 程式碼檔案的手動變更不會反映在 [O/R 設計工具] 中。 儲存設計工具並重新產生程式碼時,會覆寫您在程式碼檔中進行的所有手動變更。 如需如何加入使用者程式碼及擴充產生之類別的詳細資訊O/R Designer,請參閱How to:擴充 O/R 設計工具產生的程式碼。
建立和設定 DataContext
將 [LINQ to SQL 類別] 項目新增至專案,並開啟 [O/R 設計工具] 之後,空的設計介面代表準備好進行設定的空 DataContext。 DataContext 會使用第一個拖曳至設計介面之項目所提供的連接資訊來進行設定。 因此,DataContext 會使用第一個放入設計介面之項目的連接資訊來進行設定。 如需 DataContext 類別的詳細資訊,請參閱 DataCoNtext 方法 (O/R 設計工具)。
建立對應至資料庫資料表和檢視的實體類別
您可以將資料庫資料表和檢視從 [伺服器總管] 或 [資料庫總管] 拖曳至 [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 設計工具] 會提供 DataContext 上的 [內容命名空間] 和 [實體命名空間] 屬性。 這些屬性會決定 DataContext 和實體類別程式碼產生時,會落在哪一個命名空間 (Namespace) 中。 根據預設,這些屬性是空的,而且 DataContext 和實體類別產生時,會落在應用程式的命名空間中。 產生程式碼時,如果希望使用其他的命名空間,而非應用程式的命名空間,請在 [內容命名空間] 和/或 [實體命名空間] 屬性中輸入值。