【问题标题】:Entity Framework: One<->Many<->One Mapping?实体框架:一个<->许多<->一个映射?
【发布时间】:2009-11-18 11:08:38
【问题描述】:

我正在尝试将一对多的关系映射到 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

【问题讨论】:

    标签: c# .net asp.net entity-framework


    【解决方案1】:

    如果去掉 AssociationID 列,同时将 StudentID 和 CourseID 作为 StudentCourses 表的主键,它会拾取多对多关系,生成更直观的实体类(即 Student.Courses、Course.Students )

    【讨论】:

    • 谢谢,完美运行。但是有一个问题,我在从课程中删除学生时遇到问题,反之亦然。我可以从实体中获取数据没有问题,但是当我来保存更改时,什么都不会保留。例如: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); // 还是 0
    • 原来需要一个 Include("Courses") 才能删除课程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多