Walkthrough: Creating LINQ to SQL Classes by Using Single-Table Inheritance (O/R Designer)
公開日: 2016年4月
Object Relational Designer (O/R Designer) では、一般にリレーショナル システムに実装されている単一テーブル継承がサポートされます。このチュートリアルでは、「How to: Configure Inheritance by Using the O/R Designer」のトピックで示した汎用的な手順を拡張し、実際のデータを使用して O/R デザイナーでの継承の使用方法を示します。
このチュートリアルでは次のタスクを行います。
データベース テーブルを作成し、データを追加します。
Windows フォーム アプリケーションを作成します。
LINQ to SQL ファイルをプロジェクトに追加します。
新しいエンティティ クラスを作成します。
継承を使用するようにエンティティ クラスを構成します。
継承されたクラスをクエリします。
Windows フォームにデータを表示します。
継承するテーブルの作成
継承の動作を確認するには、小さな Person テーブルを作成し、それをベース クラスとして使用して、そのテーブルから継承する Employee オブジェクトを作成します。
ベース テーブルを作成して継承の動作を確認するには
サーバー エクスプローラーまたはデータベース エクスプローラーで、[テーブル] ノードを右クリックし、[新しいテーブルの追加] をクリックします。
注意
Northwind データベースを使用することも、テーブルを追加できる他の任意のデータベースを使用することもできます。
テーブル デザイナーで、次の列をテーブルに追加します。
列名 データ型 Null を許容 ID int False 型 int True FirstName nvarchar(200) False LastName nvarchar(200) False Manager int True ID 列を主キーとして設定します。
テーブルを Person という名前で保存します。
テーブルへのデータの追加
継承が正しく構成されていることを確認できるように、単一テーブル継承のテーブルの各クラスにデータを入力する必要があります。
テーブルにデータを追加するには
データ ビューでテーブルを開きます (サーバー エクスプローラーまたはデータベース エクスプローラーで Person テーブルを右クリックし、[テーブル データの表示] をクリックします)。
テーブルに次のデータをコピーします (コピーしてから、Results Paneで行全体を選択してテーブルに貼り付けることができます)。
ID 型 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 アプリケーションを作成するには
[ファイル] メニューで新しいプロジェクトを作成します。
プロジェクトに「InheritanceWalkthrough」という名前を付けます。
注意
O/R デザイナーは Visual Basic プロジェクトと C# プロジェクトでサポートされています。新しいプロジェクトはこれらの言語のどちらかで作成してください。
[Windows フォーム アプリケーション] テンプレートをクリックし、[OK] をクリックします。詳細については、「クライアント アプリケーション」を参照してください。
InheritanceWalkthrough プロジェクトが作成されてソリューション エクスプローラーに追加されます。
LINQ to SQL クラス ファイルをプロジェクトに追加します。
LINQ to SQL ファイルをプロジェクトに追加するには
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
LINQ to SQL クラス テンプレートをクリックし、[追加] をクリックします。
.dbml ファイルがプロジェクトに追加され、O/R デザイナーが開きます。
O/R デザイナーを使用した継承の作成
ツールボックスからデザイン サーフェイスに継承オブジェクトをドラッグして、継承を構成します。
継承を作成するには
サーバー エクスプローラーまたはデータベース エクスプローラーで、以前に作成した Person テーブルに移動します。
O/R デザイナーのデザイン サーフェイスに Person テーブルをドラッグします。
O/R デザイナーに 2 つ目の Person テーブルをドラッグし、名前を「Employee」に変更します。
Person オブジェクトから Manager プロパティを削除します。
Employee オブジェクトから、Type、ID、FirstName、および LastName の各プロパティを削除します。つまり、Manager 以外のすべてのプロパティを削除します。
ツールボックスの [オブジェクト リレーショナル デザイナー] タブで、Person オブジェクトと Employee オブジェクトの間に継承を作成します。これを作成するには、ツールボックスの [継承] 項目をクリックします。次に、O/R デザイナーで Employee オブジェクトをクリックし、Person オブジェクトをクリックします。継承線の矢印は Person オブジェクトを指します。
デザイン サーフェイスで継承線をクリックします。
"識別子のプロパティ" プロパティを Type に設定します。
Derived Class Discriminator Value プロパティを 2 に設定します。
基本クラスの識別子の値プロパティを 1 に設定します。
Inheritance Default プロパティを Person に設定します。
プロジェクトをビルドします。
継承されたクラスのクエリおよびフォームへのデータの表示
オブジェクト モデル内の特定のクラスを照会するコードをフォームに追加します。
LINQ クエリを作成し、フォームに結果を表示するには
Form1 に ListBox をドラッグします。
フォームをダブルクリックして、
Form1_Load
イベント ハンドラーを作成します。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 のレコード) であることを確認します。
アプリケーションをテストするには
F5 キーを押します。
[Type] 列の値が 2 のレコードのみが表示されていることを確認します。
フォームを閉じます ([デバッグ] メニューの [デバッグの停止] をクリックします)。
参照
O/R Designer Overview
How to: Add LINQ to SQL Classes to a Project (O/R Designer)
Walkthrough: Creating LINQ to SQL Classes (O/R Designer)
How to: Assign Stored Procedures to Perform Updates, Inserts, and Deletes (O/R Designer)
LINQ to SQL
How to: Generate the Object Model in Visual Basic or C#