【T2e】Entity Framework Core を用いたデータベースへのアクセス(5/6)
プロジェクトタイプ | C#コンソールアプリ※ |
---|---|
プロジェクト名 | T2e |
ソリューション名 | PIT2 |
ターゲットフレームワーク | .NET 8.0(長期的なサポート) |
最上位レベルのステートメントを使用しない | 使用する(チェックオフ) |
※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業についてはO/Rマッピングの必要性を参照せよ.
2e-5. Entity Framework Coreにおけるリレーションシップ
従業員に紐づく別のテーブルの情報の取得も試みてみよう. あるテーブルに外部キー制約などで紐づいているほかのテーブルの情報を取り出すには, ナビゲーションプロパティを利用する.
TblJugyoin
クラスの定義を_に再掲する.

強調した部分がナビゲーションプロパティである.これについてはここでは簡単に説明しておくにとどめ,詳細は後日詳しく説明することにする.
ナビゲーションプロパティは,あるテーブルが外部キーとして参照しているテーブルに対応するクラスの オブジェクトを「手繰り寄せる」ためのものである.
例えば,各従業員には直属の上司(kanrisha_no
)が多くとも一人設定されている.この上司の情報を手繰り寄せるための
プロパティがKanrishaNoNavigation
プロパティである.逆に,自分自身が上司役となっている従業員たちのリストが
InverseKanrishaNoNavigation
プロパティである(_).
多重度によりこれらのプロパティの型も異なり,自分にとって相手が多なのであればICollection<T>
型のプロパティに,
自分にとって相手が1なのであれば,そのまま相手の型のプロパティとなる.
_に,従業員クラスのナビゲーションプロパティを,従業員データベースのER図のリレーションシップに照らし合わせたものを示す.
註1
では,先ほどのプログラムに手を加えて,指定した従業員の上司と部下も表示するように変更してみよう. Program.cs を_に示すように変更する.
|
|
書き換えたら実行してみよう.実行すると従業員番号の入力を求められるので適当な従業員番号(例えば101
)を入力して
Enterキーを押す.実行結果は_のようになる.指定した従業員にくわえて,いる場合はその上司と部下の
従業員番号が表示されていることが分かる.
対象の従業員番号を入力: 101 jugyoin_no = 101, sei = 荒木, mei = 飛呂彦 kyuyo = 1700000, shugyobi = 2001-09-21 上司: 100 部下: 106, 107, 108, 200, 203, 204, 205
※ 従業員データベース上で従業員テーブル(
tbl_jugyoin
)が持っている列bumon_no
,つまりその従業員が所属している部門へのナビゲーションプロパティが作られていないのは,データベース演習Ⅱの教程の都合上bumon_no
に外部キー制約がつけられていないためである. ↩︎