チュートリアル : 単一テーブル継承を使用した LINQ to SQL クラスの作成 (O/R デザイナー)

オブジェクト リレーショナル デザイナー (O/R デザイナー) では、一般にリレーショナル システムに実装されている単一テーブル継承がサポートされます。 このチュートリアルでは、「方法 : O/R デザイナーを使用して継承を構成する」のトピックで示した汎用的な手順を拡張し、実際のデータを使用して O/R デザイナーでの継承の使用方法を示します。

このチュートリアルでは次のタスクを行います。

  • データベース テーブルを作成し、データを追加します。

  • Windows フォーム アプリケーションを作成します。

  • LINQ to SQL ファイルをプロジェクトに追加します。

  • 新しいエンティティ クラスを作成します。

  • 継承を使用するようにエンティティ クラスを構成します。

  • 継承されたクラスをクエリします。

  • Windows フォームにデータを表示します。

継承するテーブルの作成

継承の動作を確認するには、小さな Person テーブルを作成し、それをベース クラスとして使用して、そのテーブルから継承する Employee オブジェクトを作成します。

ベース テーブルを作成して継承の動作を確認するには

  1. サーバー エクスプローラーまたはデータベース エクスプローラーで、[テーブル] ノードを右クリックし、[新しいテーブルの追加] をクリックします。

    注意

    Northwind データベースを使用することも、テーブルを追加できる他の任意のデータベースを使用することもできます。

  2. テーブル デザイナーで、次の列をテーブルに追加します。

    列名

    データ型

    Null を許容

    ID

    int

    False

    種類

    int

    True

    FirstName

    nvarchar(200)

    False

    LastName

    nvarchar(200)

    False

    Manager

    int

    True

  3. ID 列を主キーとして設定します。

  4. テーブルを Person という名前で保存します。

テーブルへのデータの追加

継承が正しく構成されていることを確認できるように、単一テーブル継承のテーブルの各クラスにデータを入力する必要があります。

テーブルにデータを追加するには

  1. データ ビューでテーブルを開きます (サーバー エクスプローラーまたはデータベース エクスプローラーPerson テーブルを右クリックし、[テーブル データの表示] をクリックします)。

  2. テーブルに次のデータをコピーします。 (コピーしてから、結果ペインで行全体を選択してテーブルに貼り付けることができます)。

    ID

    種類

    FirstName

    LastName

    Manager

    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 アプリケーションを作成するには

  1. [ファイル] メニューで新しいプロジェクトを作成します。

  2. プロジェクトに「InheritanceWalkthrough」という名前を付けます。

    注意

    O/R デザイナーは Visual Basic プロジェクトと C# プロジェクトでサポートされています。新しいプロジェクトはこれらの言語のどちらかで作成してください。

  3. [Windows フォーム アプリケーション] テンプレートをクリックし、[OK] をクリックします。 詳細については、「.NET Framework を使用したクライアント アプリケーションの開発」を参照してください。

  4. InheritanceWalkthrough プロジェクトが作成されてソリューション エクスプローラーに追加されます。

LINQ to SQL クラス ファイルをプロジェクトに追加します。

LINQ to SQL ファイルをプロジェクトに追加するには

  1. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

  2. LINQ to SQL クラス テンプレートをクリックし、[追加] をクリックします。

    プロジェクトに .dbml ファイルが追加され、O/R デザイナーが開きます。

O/R デザイナーを使用した継承の作成

ツールボックスからデザイン サーフェイスに継承オブジェクトをドラッグして、継承を構成します。

継承を作成するには

  1. サーバー エクスプローラーまたはデータベース エクスプローラーで、以前に作成した Person テーブルに移動します。

  2. O/R デザイナーのデザイン サーフェイスに Person テーブルをドラッグします。

  3. O/R デザイナーに 2 つ目の Person テーブルをドラッグし、名前を「Employee」に変更します。

  4. Person オブジェクトから Manager プロパティを削除します。

  5. Employee オブジェクトから、TypeIDFirstName、および LastName の各プロパティを削除します。 つまり、Manager 以外のすべてのプロパティを削除します。

  6. ツールボックス[オブジェクト リレーショナル デザイナー] タブで、Person オブジェクトと Employee オブジェクトの間に継承を作成します。 これを作成するには、ツールボックス[継承] 項目をクリックします。 次に、O/R デザイナーで Employee オブジェクトをクリックし、Person オブジェクトをクリックします。 継承線の矢印は Person オブジェクトを指します。

  7. デザイン サーフェイスで継承線をクリックします。

  8. "識別子のプロパティ" プロパティを Type に設定します。

  9. Derived Class Discriminator Value プロパティを 2 に設定します。

  10. 基本クラスの識別子の値プロパティを 1 に設定します。

  11. Inheritance Default プロパティを Person に設定します。

  12. プロジェクトをビルドします。

継承されたクラスのクエリおよびフォームへのデータの表示

オブジェクト モデル内の特定のクラスを照会するコードをフォームに追加します。

LINQ クエリを作成し、フォームに結果を表示するには

  1. Form1 に ListBox をドラッグします。

  2. フォームをダブルクリックして、Form1_Load イベント ハンドラーを作成します。

  3. Form1_Load イベント ハンドラーに次のコードを追加します。

    Dim dc As New DataClasses1DataContext
    Dim results = From emp In dc.Persons _
        Where TypeOf emp Is Employee _
        Select emp
    
    For Each Emp As Employee In results
        ListBox1.Items.Add(Emp.LastName)
    Next
    
    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. フォームを閉じます ([デバッグ] メニューの [デバッグの停止] をクリックします)。

参照

処理手順

方法 : プロジェクトに LINQ to SQL クラスを追加する (O/R デザイナー)

チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナー)

方法 : 更新、挿入、および削除を実行するストアド プロシージャを割り当てる (O/R デザイナー)

方法 : Visual Basic または C# でオブジェクト モデルを生成する

概念

O/R デザイナーの概要

その他の技術情報

LINQ to SQL [LINQ to SQL]