次のように、インストラクターを含むトレーニングクラスを参加者にリンクする既存のデータベースに対してEFを実装することに取り組んでいます
Training
-------------------
ClassId (PK)
TrainingParticipant
-------------------
ParticipantId (PK)
ClassId (FK references Training)
PersonId (FK references Person)
ParticipantRoleId (FK references a role table)
参加者テーブルには、1 ~ 10 人の参加者と 1 人のトレーナーが必要です。(ParticipantRoleId によって区別されます。) データベースの最初の開発から始めて、トレーニングとトレーニング参加者の間の 1 対多の関係をマッピングした edmx とコンテキスト/モデルを生成しました。ただし、生成されたナビゲーション プロパティは、すべての TrainingParticipant エントリのコレクションを返します。
私は常にこのようなクエリをコーディングして、次のように単一のトレーナー参加者のレコードを確認または取得しています。
var trainer = context.TrainingParticipant.Where(p => p.ParticipantRoleId == 17).FirstOrDefault()
var students = context.TrainingParticipant.Where(p => p.ParticipantRoleId == 2)
複雑なクエリでこれらにアクセスしたり、モデルを ui コントロールにデータバインドするときに、より簡単にアクセスできるナビゲーション プロパティが欲しいと思っています。そのようです:
var training = context.Training.Where(t => t.Instructor.Person.FirstName.Contains("John"));
できればテーブルを変更せずに、そのようなナビゲーション プロパティを作成することは可能ですか?