使用Entity Framework从关联中获取ID

时间:2012-05-28 12:38:34

标签: 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;

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

1 个答案:

答案 0 :(得分:5)

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

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

或者您从Courses集开始:

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

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