更新:2007 年 11 月
您可以使用物件關聯式設計工具 (O/R 設計工具) 將 LINQ to SQL 類別 (Class) 對應至資料庫中的資料表。這些對應的類別也稱為「實體類別」(Entity Class)。實體類別的屬性會對應至資料表的資料行,而且您可以將資料繫結至 Windows Form 上的控制項。若要進一步了解 LINQ to SQL,請參閱在 C# 中使用 LINQ。
必要條件
如果在安裝 Visual C# Express 版時未安裝 SQL Server Express Edition,請先安裝後再繼續。LINQ to SQL 目前不支援 SQL Server Compact 3.5 資料庫。如需如何取得 SQL Server Express Edition 的詳細資訊,請參閱 HOW TO:安裝範例資料庫主題中的<取得 SQL Server Express>一節。
您還必須能夠存取 SQL Server 版的 Northwind 範例資料庫。如需如何取得並安裝這個資料庫的詳細資訊,請參閱 HOW TO:安裝範例資料庫。
開啟 O/R 設計工具
若要開啟 O/R 設計工具
在 [檔案] 功能表上,按一下 [新增專案]。
按一下 [新增專案] 對話方塊中的 [Windows Form 應用程式],並將它命名為 LINQToSQLSample,然後按一下 [確定]。
新的 Windows Form 專案隨即開啟。
在 [專案] 功能表上按一下 [加入新項目]。
按一下 [LINQ to SQL 類別] 範本,然後在 [名稱] 方塊中輸入 NorthwindSample.dbml。
按一下 [加入]。
專案中隨即加入空的 [LINQ to SQL 類別] 檔案 (NorthwindSample.dbml),並開啟 O/R 設計工具。
O/R 設計工具是由兩個設計介面組成:左邊的實體窗格以及右邊的方法窗格區域。實體窗格是主設計介面,可以顯示檔案中定義的實體類別。方法窗格這個設計介面則會顯示對應至預存程序 (Stored Procedure) 和函式的 DataContext 方法。以滑鼠右鍵按一下 O/R 設計工具,然後按一下 [隱藏方法窗格],就可以隱藏方法窗格。在本課程中您不會使用方法窗格,但是您可以在使用 DataContext 方法 (O/R 設計工具) 時更了解它。
按一下主設計介面,並在 [屬性] 視窗中確認它的名稱是 NorthwindSampleDataContext。您可以將資料庫資料表從 [資料庫總管] 拖曳至 O/R 設計工具介面,以建立實體類別。但是,您必須先建立與資料庫的連接。這個程序與 HOW TO:連接資料庫 (C#) 中說明的程序類似,不同處在於在這裡使用的是 SQL Server Express 資料庫。
若要連接至 Northwind 範例資料庫
指向 [檢視] 功能表上的 [其他視窗],然後按一下 [資料庫總管]。
[伺服器總管] 隨即開啟。
按一下 [連接至資料庫] 按鈕。
[加入連接] 對話方塊隨即開啟。
在 [加入連接] 對話方塊中,確定 [資料來源] 是 [Microsoft SQL Server 資料庫檔案]。
按一下 [瀏覽] 並選取 [Northwind.mdf] 資料庫。
按一下 [測試連接] 並確認連接成功。
按一下 [確定] 關閉 [加入連接] 對話方塊。
建立實體類別
現在 [資料庫總管] 中會顯示 Northwind 資料庫中的資料表。您可以將資料表從 [資料庫總管] 拖曳至 O/R 設計工具。這樣就會自動建立實體類別,而且該實體類別的屬性會對應至所選取資料表中的資料行。
若要建立實體類別
展開 [資料庫總管] 中的 [Northwind.mdf],然後展開 [資料表]。
將 [Customers] 從 [資料庫總管] 拖曳至 O/R 設計工具介面。如果接到提示,要將資料檔複製到專案中,請按一下 [是]。
隨即建立名為 Customer 的實體類別。它的屬性會對應至 Customers 資料表中的各資料行。
注意事項:實體類別名稱是 Customer,而不是 Customers。這個重新命名的行為稱為「複數表示」(Pluralization)。您可以在 [選項] 對話方塊中開啟或關閉這個行為。如需詳細資訊,請參閱選項對話方塊 (Visual Studio) 和 HOW TO:開啟和關閉複數表示 (O/R 設計工具)。
將 [Orders] 從 [資料庫總管] 拖曳至 O/R 設計工具介面。
隨即建立名為 Order 的實體類別。請注意,Order 類別與 Customer 實體類別之間有關聯性 (Relationship) (稱為關聯)。Order 類別的屬性對應至 Orders 資料表中的各資料行。
現在已建立好實體類別,接著可以執行 [資料來源組態精靈],將它們加入至 [資料來源] 視窗中。
若要在資料來源視窗中加入實體類別做為物件資料來源
按一下 [建置] 功能表上的 [建置方案]。
在 [資料] 功能表上,按一下 [顯示資料來源]。
按一下 [資料來源] 視窗中的 [加入新資料來源] 按鈕。
按一下 [選擇資料來源類型] 頁面上的 [物件],然後按 [下一步]。
展開 [LINQToSQLSample],並按一下 [Customer] 類別。
注意事項:如果 [Customer] 類別無法使用,請按一下 [取消],並建置專案,然後再次執行精靈。
按一下 [完成] 以建立資料來源,然後將 [Customer] 實體類別加入至 [資料來源] 視窗。
將 Windows Form 上的控制項繫結至實體類別
將資料表或欄位從 [資料來源] 視窗拖曳至表單,就可以將與實體類別進行資料繫結的控制項加入至 Windows Form。
若要加入繫結至實體類別的控制項
以滑鼠右鍵按一下 [方案總管] 中的 Form1,然後按一下 [設計工具檢視]。
展開 [資料來源] 視窗中的 [Customer]。
按一下 [CompanyName] 旁邊的下拉箭號,然後按一下 [Label]。
將 [CompanyName] 拖曳至表單。
將 [Orders] 從 [資料來源] 視窗拖曳至 Form1。將它放在 [CompanyName] 底下。
以滑鼠右鍵按一下 [方案總管] 中的 Form1,然後按一下 [檢視程式碼]。
將下列程式碼加入至表單中 Form 類別的頂端,意即不要指定特定的方法。
private NorthwindSampleDataContext northwindSampleDataContext1 = new NorthwindSampleDataContext();建立 Form_Load 事件的事件處理常式,並將下列程式碼加入至事件處理常式中:
customerBindingSource.DataSource = northwindSampleDataContext1.Customers;按 F5 執行程式碼。
在表單開啟時,按一下 [bindingNavigatorMoveNextItem] 按鈕捲動公司,並確認 ordersDataGridView 已更新為顯示所選取客戶的訂單。
儲存變更
將控制項加入至 O/R 設計工具時,[bindingNavigator] 上的 [儲存] 按鈕是停用狀態。如果要讓使用者能夠儲存變更,則必須先啟用 [儲存] 按鈕,然後加入儲存資料變更的程式碼。
若要啟用儲存按鈕
按一下 [bindingNavigator] 上的 [儲存] 按鈕 (圖示為磁碟片的按鈕)。
在 [屬性] 視窗中,將 [Enabled] 屬性設定為 [True]。
按兩下儲存按鈕以建立事件處理常式,並切換至 [色彩編輯器]。
將下列程式碼加入至 [儲存] 按鈕的事件處理常式:
northwindSampleDataContext1.SubmitChanges();按 F5 執行程式碼。
變更其中一個 [Shipped Date] 欄位中的值,並按 TAB 鍵認可變更。
按一下 [儲存] 按鈕。
關閉表單
按 F5,並確認進行的變更已儲存。