2009-11-18 155 views
2

我试图得到一个与EF映射的一对多关系,由于某种原因,它证明比平常更困难。这是我的EDMX和DB架构。我在中间表上使用自动递增键的原因是因为我被告知很难在EF上使用组合键。实体框架:一个<->许多<->一个映射?

我需要的是能够做到(与课程实体)someCourse.Students或(与学生实体)someStudent.Courses。任何人都可以给我一些关于映射这个最好方法的指针吗?

alt text http://img195.imageshack.us/img195/4053/schemacz.png alt text http://img22.imageshack.us/img22/8193/edmx.png

回答

3

如果删除AssociationID列,使双方的StudentID和CourseID的StudentCourses表的主键,它会拿起许多一对多的关系,产生更直观的实体类(即Student.Courses,Course.Students)

+0

谢谢,完美的作品。 虽然存在一个问题,但我在从课程中删除学生时遇到问题,反之亦然。我可以从实体中获取数据没有问题,但是当我来保存更改时,没有任何内容会持续存在。例如: var requestedCourse = context.Courses.Where(c => c.CourseID == CourseId).FirstOrDefault(); System.Diagnostics.Debug.WriteLine(student.Courses.Count); // 0 student.Courses.Remove(requestedCourse); System.Diagnostics.Debug.WriteLine(student.Courses.Count); // still 0 – Echilon 2009-11-18 17:29:59

+0

我们需要一个包含(“课程”)才能删除课程。 – Echilon 2009-11-18 18:19:49

相关问题