LINQ to SQL のクラスは、他のオブジェクトと同様に、継承を使用して他のクラスから派生させることができます。 コードでは、あるクラスが別のクラスから継承されていることを宣言することによって、オブジェクト間の継承関係を指定できます。 データベースでは、継承関係が複数の方法で作成されます。 オブジェクト リレーショナル デザイナー (O/R Designer)では、リレーショナル システムに実装されている場合が多いため、単一テーブル継承の概念がサポートされています。
単一テーブル継承では、基本クラスと派生クラスの両方の列が入った単一データベース テーブルが関係します。 リレーショナル データでは、識別子の列に、特定のレコードが属するクラスを決定する値が含まれます。 たとえば、会社に雇用されているすべての人を含む Persons
テーブルについて考えてみます。 従業員の人もいれば、管理者の人もいます。 Persons
テーブルには Type
という列があり、列の値は管理者は 1、従業員は 2 です。 Type
列が識別子の列です。 このシナリオでは、従業員のサブクラスを作成し、そのクラスには Type
の値が 2 であるレコードだけを格納します。
O/R Designer を使用してエンティティ クラスでの継承を構成する場合、継承データを含んだ単一テーブルをデザイナーに、継承階層のクラスごとに 1 回、計 2 回ドラッグします。 デザイナーにテーブルを追加した後、[オブジェクト リレーショナル デザイナー] ツールボックスでそれらのテーブルを継承項目に接続して、[プロパティ] ウィンドウで 4 つの継承プロパティを設定します。
継承プロパティ
継承プロパティとその説明については、次の表を参照してください。
プロパティ | [説明] |
---|---|
識別子プロパティ | 現在のレコードが属するクラスを判別するプロパティ (列にマップされる)。 |
基本クラスの識別子の値 | レコードが基本クラスに属することを決定する (識別子プロパティとして指定された列の) 値。 |
派生クラスの識別子の値 | レコードが派生クラスに属することを決定する (識別子プロパティとして指定されたプロパティの) 値。 |
継承の既定値 | [識別子プロパティ] であると指定されたプロパティの値が、[基本クラスの識別子の値] または [派生クラスの識別子の値] のどちらにも一致しない場合に格納されるクラス。 |
継承を使用し、リレーショナル データに対応するオブジェクト モデルの作成は、混乱しやすい場合があります。 このトピックでは、継承を構成する場合に必要な基本的な概念と個々のプロパティについて説明します。 以下のトピックには、O/R デザイナーを使用した継承の構成方法について、より詳しい説明が記載されています。
トピック | 説明 |
---|---|
方法: O/R デザイナーを使用して継承を構成する | O/R デザイナーを使用して、単一テーブル継承を使用するエンティティ クラスを構成する方法について説明しています。 |
チュートリアル: 単一テーブル継承を使用した LINQ to SQL クラスの作成 (O/R デザイナー) | O/R デザイナーを使用して、単一テーブル継承を使用するエンティティ クラスを構成するための詳細な手順が記載されています。 |