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

更新 : November 2007

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

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

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

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

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

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

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

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

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

継承するテーブルの作成

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

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

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

    Bb384467.alert_note(ja-jp,VS.90).gifメモ :

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

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

    列名

    データ型

    Null を許容

    ID

    int

    False

    Type

    int

    True

    FirstName

    nvarchar(200)

    False

    LastName

    nvarchar(200)

    False

    Manager

    int

    True

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

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

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

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

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

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

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

    ID

    Type

    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」という名前を付けます。

    Bb384467.alert_note(ja-jp,VS.90).gifメモ :

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

  3. [Windows フォーム アプリケーション] テンプレートをクリックし、[OK] をクリックします。詳細については、「Windows ベースのアプリケーションの作成」を参照してください。

  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 オブジェクトから、Type、ID、FirstName、および 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# でオブジェクト モデルを生成する (LINQ to SQL)

概念

O/R デザイナの概要

その他の技術情報

LINQ to SQL