次の方法で共有


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

Visual Studio の LINQ to SQL ツールでは、リレーショナル システムに通常実装されている単一テーブル継承がサポートされています。 このチュートリアルでは、「方法: O/R デザイナーを使用して継承を構成する」に記載されている汎用的な手順を拡張し、実際のデータを使用して O/R デザイナーでの継承の使用方法を示します。

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

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

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

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

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

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

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

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

継承するテーブルの作成

継承のしくみを確認するために、小さな Person テーブルを作成し、それを基底クラスとして使用して、そこから継承する Employee オブジェクトを作成します。

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

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

    Note

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

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

    列名 データ型 [NULL を許容]
    ID int False
    Type int True
    FirstName nvarchar(200) False
    LastName nvarchar(200) False
    管理者 int True
  3. ID 列を主キーとして設定します。

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

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

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

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

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

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

    ID Type FirstName 管理者
    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. Visual Studio の [ファイル] メニューで、 [新規作成]>[プロジェクト] を選択します。

  2. 左側のペインで [Visual C#] または [Visual Basic] を展開し、 [Windows デスクトップ] を選択します。

  3. 中央のペインで、 [Windows フォーム アプリ] プロジェクト タイプを選択します。

  4. プロジェクトに InheritanceWalkthrough という名前を付け、[OK] を選択します。

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

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

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

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

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

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

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

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

継承を作成するには

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

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

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

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

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

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

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

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

  9. [派生クラスの識別子の値] プロパティを 2 に設定します。

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

  11. [継承の既定値] プロパティを Person に設定します。

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

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

ここでは、オブジェクト モデル内の特定のクラスのクエリを実行するコードをフォームに追加します。

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

  1. ListBoxForm1 にドラッグします。

  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. フォームを閉じます。 ([デバッグ] メニューの [デバッグの停止] をクリックします。)