Entity-framework-inheritance
提供:Dev Guides
エンティティフレームワーク - 継承
継承により、開発者の考え方をより適切に反映する複雑なモデルを作成でき、これらのモデルとのやり取りに必要な作業も削減できます。 エンティティで使用される継承は、クラスで使用される継承と同じ目的を果たすため、開発者はこの機能の動作の基本をすでに知っています。
次の例を見て、新しいコンソールアプリケーションプロジェクトを作成してみましょう。
- ステップ1 *-プロジェクト名を右クリックしてADO.NETエンティティデータモデルを追加し、[追加]→[新しいアイテム]を選択します…
- ステップ2 *-1つのエンティティを追加し、Model Firstアプローチの章に記載されているすべてのステップに従ってPersonという名前を付けます。
- ステップ3 *-次の画像に示すように、いくつかのスカラープロパティを追加します。
ステップ4 *-さらに2つのエンティティ *Student および Teacher を追加し、Person Tableからプロパティを継承します。
- ステップ5 *-次の図に示すように、Studentエンティティを追加し、BaseタイプコンボボックスからPersonを選択します。
- ステップ6 *-同様に、教師エンティティを追加します。
- ステップ7 *-EnrollmentDateスカラープロパティを学生エンティティに、HireDateプロパティを教師エンティティに追加します。
- ステップ8 *-先に進んでデータベースを生成しましょう。
- ステップ9 *-デザイン画面を右クリックし、[モデルからデータベースを生成…]を選択します
- ステップ10 *-新しいデータベースを作成するには、[新しい接続]をクリックします。次のダイアログが開きます。 OKをクリックしてください。
ステップ11 *-[完了]をクリックします。 これにより、プロジェクトに .edmx.sqlファイルが追加されます。 .sqlファイルを開くことにより、Visual StudioでDDLスクリプトを実行できます。 次に、右クリックして「実行」を選択します。
- ステップ12 *-サーバーエクスプローラーに移動すると、指定された3つのテーブルでデータベースが作成されていることがわかります。
- ステップ13 *-次のドメインクラスも自動的に生成されることもわかります。
以下は、Contextクラスです。
データベースに生徒と教師を追加して、データベースから取得します。
生徒と教師がデータベースに追加されます。 NToは生徒と教師を取得します。 OfType メソッドを使用する必要があります。これは、指定された部門に関連する生徒と教師を返します。
最初のクエリで、OfType <Student>()を使用すると、HireDateプロパティはTeacher Entityの一部であり、同様にOfType <Teacher>()を使用するとEnrollmentDateプロパティにアクセスできないため、HireDateにアクセスできません
上記のコードが実行されると、次の出力が表示されます-
理解を深めるために、上記の例を段階的に実行することをお勧めします。