C# 将实体映射到EF 4.5中的多对多连接表

C# 将实体映射到EF 4.5中的多对多连接表,c#,database,entity-framework,fluent-interface,C#,Database,Entity Framework,Fluent Interface,目前,我正在通过fluentapi将现有的DB表映射到新的ef4.5模型。我有一个关于如何将下面的db结构映射到类的任务 Students(pk Id...) Courses (pk Id...) Students_Courses (pk Id, fk StudentId, fk CourseId) Comments (pk Id, fk Students_Courses Id, comment, dateposted...) 我的想法是,我可能会有许多评论每个学生的课程对。在这个场景中,表示

目前,我正在通过fluentapi将现有的DB表映射到新的ef4.5模型。我有一个关于如何将下面的db结构映射到类的任务

Students(pk Id...)
Courses (pk Id...)
Students_Courses (pk Id, fk StudentId, fk CourseId)
Comments (pk Id, fk Students_Courses Id, comment, dateposted...)
我的想法是,我可能会有许多评论每个学生的课程对。在这个场景中,表示类的最佳方式是什么? 这里的问题是,我可能需要将注释实体映射到Students_Courses表,并以某种方式确定该注释属于哪个学生和课程(就类而言)。 对设计有什么建议吗? 谢谢

也许您希望使用
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; }
}
public class Comment
{
    public int CommentId { get; set; }
    public int StudentCourseId { get; set; }
    public virtual StudentCourse StudentCourse { get; set; }
    ...
}

因此,通过
StudentCourse

感谢Asif,评论与学生和课程相关。这真的很有帮助。这实际上是我想要避免的:(谢谢你的回答,我明白了。我通过创建一个helper类解决了这个问题,该类接受学生对象并为学生参加的每门课程填充非虚拟评论属性。这使我能够保持整洁的真实对象结构,而不引入任何存根。无论如何,谢谢。我将你的答案标记为已接受,因为它是正确的。)事实上,ect帮助我了解EF如何处理如此复杂的关系。