チュートリアル: 単一テーブル継承を使用して LINQ to SQL クラスを作成する (O/R デザイナー)
Visual Studio の LINQ to SQL ツールでは、リレーショナル システムに通常実装されている単一テーブル継承がサポートされています。 このチュートリアルでは、「方法: O/R デザイナーを使用して継承を構成する」に記載されている汎用的な手順を拡張し、実際のデータを使用して O/R デザイナーでの継承の使用方法を示します。
このチュートリアルでは次のタスクを実行します。
データベース テーブルを作成し、データを追加します。
Windows フォーム アプリケーションを作成します。
LINQ to SQL ファイルをプロジェクトに追加します。
新しいエンティティ クラスを作成します。
継承を使用するようにエンティティ クラスを構成します。
継承されたクラスをクエリします。
Windows フォームにデータを表示します。
継承するテーブルの作成
継承のしくみを確認するために、小さな Person
テーブルを作成し、それを基底クラスとして使用して、そこから継承する Employee
オブジェクトを作成します。
ベース テーブルを作成して継承の動作を確認するには
サーバー エクスプローラーまたはデータベース エクスプローラーで、[テーブル] ノードを右クリックし、[新しいテーブルの追加] をクリックします。
Note
Northwind データベースを使用することも、テーブルを追加できる他の任意のデータベースを使用することもできます。
テーブル デザイナーで、次の列をテーブルに追加します。
列名 データ型 [NULL を許容] ID int False Type int True FirstName nvarchar(200) False LastName nvarchar(200) False 管理者 int True ID 列を主キーとして設定します。
テーブルを Person という名前で保存します。
データをテーブルに追加する
継承が正しく構成されていることを確認できるように、単一テーブル継承のテーブルの各クラスにデータを入力する必要があります。
テーブルにデータを追加するには
データ ビューでテーブルを開きます (サーバー エクスプローラーまたはデータベース エクスプローラーで Person テーブルを右クリックし、[テーブル データの表示] をクリックします)。
テーブルに次のデータをコピーします。 ([結果] ペインで行全体を選択してコピーし、テーブルに貼り付けることができます。)
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 フォーム アプリケーションを作成するには
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 のレコードのみが表示されていることを確認します。
フォームを閉じます。 ([デバッグ] メニューの [デバッグの停止] をクリックします。)