Visual Studio の LINQ to SQL ツールでは、通常はリレーショナル システムに実装されるため、単一テーブルの継承がサポートされます。 このチュートリアルでは、「 方法: O/R デザイナーを使用して継承を構成する 」トピックに記載されている一般的な手順について説明し、O/R デザイナーでの継承の使用を示す実際のデータを提供します。
このチュートリアルでは、次のタスクを実行します。
データベース テーブルを作成し、それにデータを追加します。
Windows フォーム アプリケーションを作成します。
LINQ to SQL ファイルをプロジェクトに追加します。
新しいエンティティ クラスを作成します。
継承を使用するようにエンティティ クラスを構成します。
継承されたクラスのクエリを実行します。
Windows フォームにデータを表示します。
継承するテーブルを作成する
継承のしくみを確認するには、小さな Person テーブルを作成し、それを基底クラスとして使用してから、それを継承する Employee オブジェクトを作成します。
継承を示すベース テーブルを作成するには
サーバー エクスプローラーまたはデータベース エクスプローラーで、[テーブル] ノードを右クリックし、[新しいテーブルの追加] をクリックします。
注
Northwind データベースまたはテーブルを追加できるその他のデータベースを使用できます。
テーブル デザイナーで、次の列をテーブルに追加します。
列名 データ型 Null を許可する 身分証明書 int 偽 タイプ int 正しい 名 nvarchar(200) 偽 LastName nvarchar(200) 偽 マネージャー int 正しい ID 列を主キーとして設定します。
テーブルを保存し、Person という名前を 付けます。
テーブルにデータを追加する
継承が正しく構成されていることを確認できるように、テーブルには、単一テーブルの継承の各クラスのデータが必要です。
テーブルにデータを追加するには
データ ビューでテーブルを開きます。 (サーバー エクスプローラーまたはデータベース エクスプローラーで Person テーブルを右クリックし、[テーブル データの表示] をクリックします)。
次のデータをテーブルにコピーします。 ( 結果 ウィンドウで行全体を選択して、コピーしてテーブルに貼り付けることができます)。
身分証明書 タイプ 名 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 フォーム アプリケーションを作成するには
Visual Studio の [ファイル] メニューで、[新規作成]>[プロジェクト] を選択します。
左側のウィンドウで Visual C# または Visual Basic を展開し、 Windows デスクトップを選択します。
中央のウィンドウで、 Windows フォーム アプリ プロジェクトの種類を選択します。
プロジェクトに InheritanceWalkthrough という名前を付け、[ OK] を選択します。
InheritanceWalkthrough プロジェクトが作成され、ソリューション エクスプローラーに追加されます。
LINQ to SQL クラス ファイルをプロジェクトに追加する
LINQ to SQL ファイルをプロジェクトに追加するには
[ プロジェクト ] メニューの [ 新しい項目の追加] をクリックします。
LINQ to SQL クラス テンプレートをクリックし、[追加] を選択します。
.dbmlファイルがプロジェクトに追加され、O/R デザイナーが開きます。
O/R デザイナーを使用して継承を作成する
継承を構成するには、ツールボックスからデザイン サーフェイスに継承オブジェクトをドラッグします。
継承を作成するには
サーバー エクスプローラーまたはデータベース エクスプローラーで、前に作成した Person テーブルに移動します。
Person テーブルを O/R デザイナーのデザイン 画面にドラッグします。
2 番目の Person テーブルを O/R デザイナー にドラッグし、その名前を Employee に変更 します。
Person オブジェクトから Manager プロパティを削除します。
Employee オブジェクトから Type、ID、FirstName、LastName の各プロパティを削除します。 (つまり、Manager を除くすべてのプロパティを削除 します)。
ツールボックスの [オブジェクト リレーショナル デザイナー] タブで、Person オブジェクトと Employee オブジェクトの間に継承を作成します。 これを行うには、ツールボックスの [継承] 項目をクリックし、マウス ボタンを離します。 次に、O/R デザイナーで Employee オブジェクトと Person オブジェクトをクリックします。 継承線の矢印は、 Person オブジェクトを指します。
デザイン 画面の [継承 ] 線をクリックします。
識別子プロパティを Type に設定します。
派生クラス識別子の値プロパティを 2 に設定します。
基本クラス識別子の値プロパティを 1 に設定します。
継承の 既定 のプロパティを Person に設定します。
プロジェクトをビルドします。
継承したクラスにクエリを実行し、フォームにデータを表示する
次に、オブジェクト モデル内の特定のクラスに対してクエリを実行するコードをフォームに追加します。
LINQ クエリを作成し、フォームに結果を表示するには
ListBox を Form1 にドラッグします。
フォームをダブルクリックして、
Form1_Loadイベント ハンドラーを作成します。Form1_Loadイベント ハンドラーに次のコードを追加します。
アプリケーションをテストする
アプリケーションを実行し、リスト ボックスに表示されるレコードがすべて従業員 ( Type 列の値が 2 のレコード) であることを確認します。
アプリケーションをテストするには
F5 押します。
Type 列の値が 2 のレコードのみが表示されることを確認します。
フォームを閉じてください。 ([ デバッグ ] メニューの [ デバッグの停止] をクリックします)。