LINQ使用连接器类将新项目(学生)添加到另一种类型(课程)的列表中

时间:2018-10-27 17:37:38

标签: c# linq frameworks entity dbcontext

这是我的情况:

我有
My database

我的目标
将新学生添加到班级列表中。

我的代码:

    public void addStudent()
    {
        using (RegistarDbContext db = new RegistarDbContext())
        {
            var query = db.tblCourses
                .SelectMany(s => s.tblStudents)
                .ToList();



            query.Add(selectedStudentList);
            db.SaveChanges();
        }

    }

代码上下文:
selectedStudentList =从下拉列表中选择的(tblStudent)的类型

其他信息:
逐步执行该程序,看来我的学生已添加到变量查询中,但是无法保存更改。

1 个答案:

答案 0 :(得分:0)

以防其他任何人想知道我的问题的答案:

        public void addStudent()
        {
        //Get the course ID thats been selected.
        var selectedCourseID = selectedCourseList.courseID;

        using (RegistarDbContext db = new RegistarDbContext())
        {
            //Find the course in the database.
            var course = db.tblCourses.Where(c => c.courseID == selectedCourseID).FirstOrDefault();

            //Find the student to add from the database.
            var student = db.tblStudents.Where(s => s.studentID == selectedStudentList.studentID).FirstOrDefault();

            if (checkIfExists(course, student))
                MessageBox.Show("The student is already in the list!", "ERROR: ", MessageBoxButton.OK, MessageBoxImage.Error);
            else
            {
                //Add it to the coruses student list.
                course.tblStudents.Add(student);
                db.SaveChanges();
                MessageBox.Show(String.Format("{0} was successfully enrolled in {1}!", student.fullName, course.name), "Student successfully added!", MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
    }

我学到的东西
将学生添加到具有学生列表的课程时,必须同时选择该课程,并且该学生将数据库放入数据库。

只有这样,您才能应用.add函数将更改保存到数据库中!

我希望这可以节省某人花在我身上的时间:)