使用Entity Framework从关联中获取ID

JSS*_*JSS 3 c# linq entity-framework associations

我将这个小应用程序作为练习来构建实体框架的基础知识.它使用带有3个表的MySQL数据库:课程,学生和Students_has_Courses: DB Schema

我使用此db在Visual Studio中创建实体模型: VS Schema

它工作正常.我可以用我的datagridview绑定一个表,修改数据并按一个按钮来保存更改.但正如您所看到的,Students_has_Courses是一个关联(这对我来说很新).现在我的问题是:我需要指定学生证的每个课程ID(了解学生正在参加哪些课程).我认为这个LINQ查询没问题:

var query = from s in school.Students.AsEnumerable()
            where s.ID == selectedStudentId
            select s.Courses;
Run Code Online (Sandbox Code Playgroud)

但我似乎无法从这个EntityCollection中提取课程ID?我用了一个,foreach(var course in query)但我真的被困在这里了.

Sla*_*uma 5

您应该能够使用以下方式获取课程ID:

var studentsCourseIDs = (from s in school.Students
                         where s.ID == selectedStudentId
                         select s.Courses.Select(c => c.ID))
                        .Single();
Run Code Online (Sandbox Code Playgroud)

或者你从Courses集合开始:

var studentsCourseIDs = (from c in school.Courses
                         where c.Students.Any(s => s.ID == selectedStudentId)
                         select c.ID)
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

不要AsEnumerable()在示例中使用它,因为它会在where子句和选择之前将整个学生表加载到内存中.