我正在针对现有数据库实施 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 为特色。)我从数据库首先开发开始,并生成了一个 edmx 和上下文/模型,这些模型映射了 Training 和 Training Participant 之间的 1-Many 关系;但是,它生成的导航属性将带回所有 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"));
是否可以创建这样的导航属性,最好不更改任何表?