次の方法で共有


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

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

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

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

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

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

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

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

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

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

継承するテーブルを作成する

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

継承を示すベース テーブルを作成するには

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

    Northwind データベースまたはテーブルを追加できるその他のデータベースを使用できます。

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

    列名 データ型 Null を許可する
    身分証明書 int
    タイプ int 正しい
    nvarchar(200)
    LastName nvarchar(200)
    マネージャー int 正しい
  3. ID 列を主キーとして設定します。

  4. テーブルを保存し、Person という名前を 付けます

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

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

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

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

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

    身分証明書 タイプ LastName マネージャー
    1 1 アン ウォレス NULL
    2 1 カルロス Grilo NULL
    3 1 ヤイール Peled NULL
    4 2 Gatis Ozolins 1
    5 2 アンドレアス ハウザー 1
    6 2 ティファニー Phuvasate 1
    7 2 Alexey Orekhov 2
    8 2 Michał Poliszkiewicz 2
    9 2 田井 イー 2
    10 2 Fabricio ノリエガ 3
    11 2 ミンディー マルティヌス 3
    12 2 ケン 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 オブジェクトから TypeIDFirstNameLastName の各プロパティを削除します。 (つまり、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. フォームを閉じてください。 ([ デバッグ ] メニューの [ デバッグの停止] をクリックします)。