【问题标题】:Map entities to many-to-many junction table in EF 4.5将实体映射到 EF 4.5 中的多对多联结表
【发布时间】:2012-10-22 11:15:02
【问题描述】:

目前,我正在通过 Fluent Api 将现有的数据库表映射到新的 EF 4.5 模型。我有一个关于如何将以下数据库结构映射到类的问题。

Students(pk Id...)
Courses (pk Id...)
Students_Courses (pk Id, fk StudentId, fk CourseId)
Comments (pk Id, fk Students_Courses Id, comment, dateposted...)

我的想法是每个 student_course 对我可能有很多评论。在这种情况下代表我的班级的最佳方式是什么? 这里的问题是我可能需要将 Comment 实体映射到 Students_Courses 表,并以某种方式确定该评论属于哪个学生和课程(就课程而言)。 对设计有什么建议吗? 谢谢!

【问题讨论】:

标签: c# database entity-framework fluent-interface


【解决方案1】:

也许您想使用Entity Framework Power Tools 将您的数据模型反向工程为带有DbContext API 的“代码优先”模型。

您会看到类似StudentCourse 类的东西会生成,如下所示:

public class StudentCourse
{
    public StudentCourse()
    {
        this.Comments = new List<Comment>();
    }

    public int StudentCourseId { get; set; }
    public int StudentId { get; set; }
    public int CourseId { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
    public virtual Course Course { get; set; }
    public virtual Student Student { get; set; }
}

Comment 看起来像这样:

public class Comment
{
    public int CommentId { get; set; }
    public int StudentCourseId { get; set; }
    public virtual StudentCourse StudentCourse { get; set; }
    ...
}

所以cmets通过StudentCourse与学生和课程相关

【讨论】:

  • 这实际上是我想避免的 :( 感谢您的回答,我明白了。我通过创建一个辅助类来解决它,该类接受 Student 对象并为每个 Course 填充非虚拟 Comments 属性该学生参加。这使我能够在不引入任何存根的情况下保持整洁的真实世界对象结构。无论如何,谢谢。我将您的答案标记为已接受,因为它是正确的,并且实际上帮助我理解了 EF 如何处理如此复杂的关系。跨度>
猜你喜欢
  • 1970-01-01
  • 2014-04-28
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多