共用方式為


逐步解說:使用單一資料表繼承建立 LINQ to SQL 類別 (O/R 設計工具)

Visual Studio 中的 LINQ to SQL 工具通常是在關聯式系統中實作,因此可支援單一資料表繼承。 本逐步解說以如何:使用 O/R 設計工具設定繼承主題中提供的泛型步驟為基礎,提供一些真實資料來示範 O/R 設計工具中的繼承用法。

在此逐步解說中,您將執行下列工作:

  • 建立資料庫資料表,並在其中加入資料。

  • 建立 Windows Forms 應用程式。

  • 將 LINQ to SQL 檔案新增至專案。

  • 建立新的實體類別。

  • 設定實體類別以使用繼承。

  • 查詢繼承的類別。

  • 將資料顯示在 Windows Form 上。

建立要繼承的來源資料表

若要查看繼承的運作方式,請建立小型 Person 資料表、將它當作基底類別 (Base Class),然後建立繼承自它的 Employee 物件。

若要建立用來示範繼承的基底資料表

  1. 在 [伺服器總管] 或 [資料庫總管] 中,以滑鼠右鍵按一下 [Tables] 節點,然後按一下 [新增資料表]

    注意

    您可以使用 Northwind 資料庫,或其他可以在其中加入資料表的任何資料庫。

  2. 資料表設計工具中,將下列資料行新增至資料表:

    資料行名稱 資料類型 允許 Null
    識別碼 int False
    類型 int True
    FirstName nvarchar(200) False
    LastName nvarchar(200) False
    經理 int True
  3. 將 ID 資料行設定為主索引鍵。

  4. 儲存資料表,並將它命名為 Person

新增資料至資料表

為了能夠確認繼承的設定是否正確,單一資料表繼承中的每個類別都需要在資料表中有一些資料。

若要加入資料至資料表

  1. 在資料檢視中開啟資料表 (以滑鼠右鍵按一下 [伺服器總管] 或 [資料庫總管] 中的 [Person] 資料表,然後按一下 [顯示資料表資料]。)

  2. 將下列資料複製至資料表 (您可以在 [結果] 窗格中選取整個資料列,然後將其複製並貼到資料表中。)

    識別碼 類型 FirstName LastName 經理
    1 1 Anne Wallace NULL
    2 1 Carlos Grilo NULL
    3 1 Yael Peled NULL
    4 2 Gatis Ozolins 1
    5 2 Andreas Hauser 1
    6 2 Tiffany Phuvasate 1
    7 2 Alexey Orekhov 2
    8 2 Michał Poliszkiewicz 2
    9 2 Tai Yee 2
    10 2 Fabricio Noriega 3
    11 2 Mindy Martin 3
    12 2 Ken Kwok 3

建立新專案

現在您已建立好資料表,請建立新的專案來示範如何設定繼承。

建立新的 Windows Forms 應用程式

  1. 在 Visual Studio 的 [檔案] 功能表上,選取 [新增]>[專案]

  2. 在左側窗格中展開 Visual C#Visual Basic,然後選取 [Windows 桌面]

  3. 在中間窗格中,選取 [Windows Forms 應用程式] 專案類型。

  4. 將專案命名為 InheritanceWalkthrough,然後選擇 [確定]

    InheritanceWalkthrough 專案已建立並新增至方案總管中。

將 LINQ to SQL 類別檔案新增至專案

若要將 LINQ to SQL 檔案新增至專案

  1. 在 [專案] 功能表上,按一下 [加入新項目]

  2. 按一下 [LINQ to SQL 類別] 範本,然後選取 [新增]

    .dbml 檔案隨即加入至專案,並開啟 O/R 設計工具

使用 O/R 設計工具建立繼承

設定繼承的方法是將繼承物件從工具箱拖曳至設計介面。

若要建立繼承

  1. 在 [伺服器總管] 或 [資料庫總管] 中,巡覽至先前所建立的 [Person] 資料表。

  2. 將 [Person] 資料表拖曳至 [O/R 設計工具] 設計介面。

  3. 將第二個 [Person] 資料表拖曳至 [O/R 設計工具],然後將其名稱變更為 [Employee]

  4. Person 物件中刪除 Manager 屬性。

  5. Employee 物件中刪除 TypeIDFirstNameLastName 屬性。 (亦即刪除 Manager 以外的所有屬性。)

  6. 工具箱的 [物件關連式設計工具] 索引標籤中,在 PersonEmployee 物件之間建立繼承。 若要這麼做,請按一下 [工具箱] 中的 [繼承] 項目,然後放開滑鼠按鍵。 接著按一下 [Employee] 物件,然後按一下 [O/R 設計工具] 中的 [Person] 物件。 繼承線的箭號接著指向 [Person] 物件。

  7. 按一下設計介面上的 [繼承] 線。

  8. 將 [鑑別子屬性] 屬性設定為 Type

  9. 將 [衍生類別鑑別子值] 屬性設定為 2

  10. 將 [基底類別鑑別子值] 屬性設定為 1

  11. 繼承預設值屬性設定為 Person

  12. 組建專案。

查詢繼承的類別並將資料顯示在表單上

您現在會將一些程式碼新增至表單,以查詢物件模型中的特定類別。

若要建立 LINQ 查詢並將結果顯示在表單上

  1. ListBox 拖曳至 Form1

  2. 按兩下表單,以建立 Form1_Load 事件處理常式。

  3. 將下列程式碼加入至 Form1_Load 事件處理常式:

    NorthwindDataContext dc = new DataClasses1DataContext();
    var results = from emp in dc.Persons
                  where emp is Employee
                  select emp;
    
    foreach(Employee Emp in results)
    {
        listBox1.Items.Add(Emp.LastName)
    }
    

測試應用程式

執行應用程式,並確認清單方塊中顯示的記錄都是員工 (Type 資料行值為 2 的記錄)。

若要測試應用程式

  1. 請按 F5

  2. 確認只顯示 Type 資料行值為 2 的記錄。

  3. 關閉表單。 (按一下 [偵錯] 功能表上的 [停止偵錯]。)