共用方式為


建立 LINQ to SQL 類別:使用 O/R 設計工具

更新:2007 年 11 月

物件關聯式設計工具 (O/R 設計工具) 可以將 LINQ to SQL 類別對應至資料庫中的資料表。這些對應的類別也稱為「實體類別」(Entity Class)。實體類別的屬性會對應至資料表的各資料行,而且您可以將資料繫結至 Windows Form 上的控制項。若要進一步了解 LINQ to SQL,請參閱在 Visual Basic Express 中使用 LINQ

在本課程中,您將學習如何使用 O/R 設計工具建立與 Northwind 資料庫中的資料表對應的實體類別,然後將資料顯示在 Windows Form 應用程式上。

必要條件

  • 如果在安裝 Visual Basic Express 版時未安裝 SQL Server Express Edition,請先安裝後再繼續。LINQ to SQL 目前不支援 SQL Server Compact 3.5 資料庫。如需如何取得 SQL Server Express Edition 的詳細資訊,請參閱 HOW TO:安裝範例資料庫中的<取得 SQL Server Express Edition>一節。

  • 若要完成本課程,您必須可以存取 SQL Server 版本的 Northwind 範例資料庫。如需詳細資訊,請參閱 HOW TO:安裝範例資料庫

試試看!

若要開啟 O/R 設計工具

  1. 在 [檔案] 功能表上,按一下 [新增專案]。

  2. 按一下 [新增專案] 對話方塊之 [範本] 窗格中的 [Windows Form 應用程式],然後將專案命名為 LINQToSQLSample,再按一下 [確定]。

    新的 Windows Form 專案隨即開啟。

  3. 按一下 [專案] 功能表上的 [加入新項目]。

  4. 按一下 [LINQ to SQL 類別] 範本,並在 [名稱] 方塊中輸入 NorthwindSample.dbml。

  5. 按一下 [加入]。

    專案中會加入空的 [LINQ to SQL 檔案] (NorthwindSample.dbml),並開啟 O/R 設計工具。

O/R 設計工具是由兩個設計介面組成:左邊的 [實體] 窗格以及右邊的 [方法] 窗格。[實體] 窗格是主設計介面,可以顯示檔案中定義的實體類別。[方法] 窗格這個設計介面則會顯示對應至預存程序 (Stored Procedure) 和函式的 DataContext 方法。以滑鼠右鍵按一下 [O/R 設計工具],然後按一下 [隱藏方法窗格],就可以隱藏 [方法] 窗格。在本課程中您不會使用 [方法] 窗格,但是您可以在 DataContext 方法 (O/R 設計工具) 中進一步了解它。

按一下主設計介面,並在 [屬性] 視窗中的 [名稱] 屬性中確認它的名稱是 NorthwindSampleDataContext。您可以將資料庫資料表從 [資料庫總管] 拖曳至 O/R 設計工具介面,以建立實體類別。但是,您必須先建立與資料庫的連接。這個程序與 取得需要的資訊:連接現有資料庫 中說明的程序類似,不同處在於本課程使用的是 SQL Server Express 資料庫。

若要連接至 Northwind 資料庫

  1. 按一下 [檢視] 功能表上的 [資料庫總管]。

    [資料庫總管] 隨即開啟。

  2. 按一下 [資料庫總管] 工具列中的 [連接至資料庫] 按鈕。

  3. 按一下 [選擇資料來源] 視窗中的 [ Microsoft SQL Server 資料庫檔案],然後按一下 [繼續]。

    [加入連接] 對話方塊隨即開啟。

  4. 在 [加入連接] 對話方塊中,確定資料來源是 [Microsoft SQL Server 資料庫檔案 (SqlClient)]。

  5. 按一下 [瀏覽],然後搜尋並選取 [Northwind.mdf] 資料庫。按一下 [開啟]。

  6. 按一下 [測試連接] 確認連接成功。

  7. 按一下 [確定] 關閉 [加入連接] 對話方塊。

建立實體類別

現在 [資料庫總管] 中會顯示 Northwind 資料庫中的資料表。您可以將資料表從 [資料庫總管] 拖曳至 [O/R 設計工具]。這樣就會自動建立實體類別,而且該實體類別的屬性會對應至您從 [資料庫總管] 拖曳的資料表中的資料行。

若要建立實體類別

  1. 展開 [資料庫總管] 中的 [Northwind.mdf],然後展開 [資料表]。

  2. 將 [Customers] 從 [資料庫總管] 拖曳至 O/R 設計工具介面。如果提示您將資料檔案複製到專案中,請按一下 [是]。

    建立一個名稱為 [Customer] 的實體類別。它的屬性會對應至 [Customers] 資料表中的各資料行。

  3. 將 [Orders] 從 [資料庫總管] 拖曳至 O/R 設計工具介面。

    隨即建立實體類別 [Order],該類別具有與 [Customer] 實體類別的關聯 (關聯性)。它的屬性會對應至 [Orders] 資料表中的各資料行。

現在已建立好實體類別,接著可以執行 [資料來源組態精靈],將它們加入至 [資料來源] 視窗中。

若要在資料來源視窗中加入實體類別做為物件資料來源

  1. 按一下 [建置] 功能表上的 [Build LINQToSQLSample]。

  2. 在 [資料] 功能表上,按一下 [顯示資料來源]。

  3. 在 [資料來源] 視窗中,按一下 [加入新資料來源]。

  4. 按一下 [選擇資料來源類型] 頁面上的 [物件],然後按 [下一步]。

  5. 展開 [LINQToSQLSample] 節點,然後找出 [Customer] 類別。

    注意事項:

    如果 [Customer] 類別無法使用,請按一下 [取消],並建置專案,然後再次執行精靈。

  6. 按一下 [完成] 以建立資料來源,然後將 [Customer] 實體類別加入至 [資料來源] 視窗。

將 Windows Form 上的控制項繫結至實體類別

您可以將資料表或欄位從 [資料來源] 視窗拖曳至表單,以將與實體類別進行資料繫結的控制項加入至 Windows Form。

若要加入繫結至實體類別的控制項

  1. 以滑鼠右鍵按一下 [方案總管] 中的 Form1,然後按一下 [設計工具檢視]。

  2. 展開 [資料來源] 視窗中的 [Customer]。

  3. 按一下 [ CompanyName] 旁邊的下拉箭號,然後按一下 [標籤]。

  4. 將 [CompanyName] 拖曳至表單。

    標籤和巡覽工具列會加入至表單。

  5. 將 [Orders] 從 [資料來源] 視窗拖曳至 Form1。將它放在 [CompanyName] 底下。

  6. 以滑鼠右鍵按一下 [方案總管] 中的 Form1,然後按一下 [程式碼檢視]。

  7. 將下列程式碼加入至表單中 Form 類別的頂端,意即不要指定特定的方法。

    Private NorthwindSampleDataContext1 As New _
        NorthwindSampleDataContext
    
  8. 在表單上按兩下以建立 Form_Load 事件的事件處理常式。將下列程式碼加入至事件處理常式:

    CustomerBindingSource.DataSource = _
        NorthwindSampleDataContext1.Customers()
    
  9. 按 F5 執行程式碼。

  10. 在表單開啟時,按一下工具列上的 [移到下一個] 按鈕捲動公司,並確認訂單資料已更新為顯示所選取客戶的訂單。

儲存變更

將控制項加入至 O/R 設計工具時,巡覽工具列上的 [儲存資料] 按鈕是停用狀態。如果要讓使用者能夠儲存變更,則必須先啟用 [儲存] 按鈕,然後加入儲存資料變更的程式碼。

若要啟用儲存按鈕

  1. 在 [設計] 檢視中,選取巡覽工具列上的儲存按鈕 (圖示為碟片的按鈕)。

  2. 在 [屬性] 視窗中,將 [Enabled] 屬性設定為 [True]。

  3. 按兩下儲存按鈕以建立事件處理常式,並切換至 [色彩編輯器]。

  4. 將下列程式碼加入至儲存按鈕事件處理常式:

    NorthwindSampleDataContext1.SubmitChanges()
    
  5. 按 F5 執行程式碼。

  6. 變更其中一個 [Shipped Date] 欄位中的值,並按 TAB 鍵認可變更。

  7. 按一下 [儲存資料] 按鈕。

  8. 關閉表單

  9. 按 F5,並確認進行的變更已儲存。

後續步驟

在本課程中,您學會如何使用 O/R 設計工具建立 LINQ to SQL 類別。在下一課中,您將學習如何使用 LINQ 查詢來繫結資料。若要進一步了解如何在應用程式中使用 LINQ,請參閱在 Visual Basic Express 中使用 LINQ

下一個課程:使用 LINQ 將資料繫結至控制項

請參閱

工作

儲存及存取資料

顯示關聯資料

逐步解說:建立 LINQ to SQL 類別 (O/R 設計工具)

概念

在 Visual Basic Express 中使用 LINQ

O/R 設計工具概觀

其他資源

管理您的記錄:使用程式中的資料