实体框架对已有数据的流畅API

时间:2017-07-20 13:52:01

标签: c# mysql entity-framework ef-fluent-api

型号1)

public class Student {

    int StudentID {get;set;}

    string FirstName {get;set;}

    string LastName {get;set;}

ICollection courses = {get; set;}

}

模型2)

public class Course{

    int CourseID {get;set;}

    string CourseName {get;set;}

    int CreditHours {get;set;}

}

Model3)

public class StudentCourse{

    int StudentCourseID {get;set;}

    int StudentID {get;set;}

    int CourseID {get;set;}

}

现在我将一堆数据添加到数据库......

并且学生与课程(一对多)之间的关系丢失了。

现在我只有三个数据表,基于数据库中的上述模型

他们之间没有任何关系。

如果我创建另一个应用程序,请编写与上述模型完全匹配的3个模型,并定义

之间的一对多关系

学生和课程使用流畅的API,这会有用吗?那我将能够将已存在的数据联系起来吗?

例如,

完成上述步骤并查询学生列表并进行student.courses.ToList();具有匹配studentID的课程是否会作为该查询的列表返回?

1 个答案:

答案 0 :(得分:0)

  

并且学生与课程(一对多)之间的关系丢失了。

这种关系不起作用,因为您只在Student方设置了一个链接。您还需要在Courses上添加关系的端点:

public class Student {
    public virtual ICollection<Course> Courses { get; set; }
}

public class Course {
    public virtual Student Student { get; set; }
}

这应该建立1-many关系。

许多学生虽然参加相同的课程,所以我将其设置为许多关系:

public class Student {
    public virtual ICollection<Course> Courses { get; set; }
}

public class Course {
    public virtual ICollection<Student> Students { get; set; }
}

我相信这应该消除对学生课程表的需要,但我在这一点上有所纠正。

现在,对于他们之间的联系(StudentCourse),你也想要在这个上正确地构建你的人际关系:

public class StudentCourse
{
    public int Id { get; set; }
    public virtual Student Student { get; set; }
    public virtual Course Course { get; set; }
}