我正在尝试加入表格Student和Course,然后使用绑定到表格SID的SID(学生ID)和CID(课程ID)组合框在表格Student_Course中添加一个标记(按添加按钮时)学生与课程的CID。

在代码中,我尝试加入表格,但它给了我一个


  “在System.Core.dll中发生了'System.InvalidOperationException类型的未处理的异常”。我加入表的地方发生错误。


我该如何解决?还是有其他方法可以做到这一点?

TLDR;

因此,我有两个组合框,分别称为CID和SID,可以在其中选择课程ID和学生ID。然后,我有一个用于标记的文本框。我希望能够选择课程ID和学生ID,然后在其中添加标记。



private void btnAdd_Click(object sender, EventArgs e)
    {
        using (Entities2 db = new Entities2())
        {
            int SID = Convert.ToInt32(cboSID.Text);
            int CID = Convert.ToInt32(cboCID.Text);

            Student_Course marks = (from c in db.Student_Course join s in db.Students on c.SID equals s.SID join o in db.Courses on c.CID equals o.CID where c.SID == SID && c.CID == CID select c).First();
            marks.Mark = Convert.ToInt32(txtMark.Text);

            db.SaveChanges();
            MessageBox.Show("Marks Added");
        }

        using (Entities2 db = new Entities2()) //link combobox and DataGridView to List in Student_Course
        {
            var studentCourse = from c in db.Student_Course select new { SID = c.SID, Mark = c.Mark };

            editDataGridView.DataSource = studentCourse.ToList();
        }

        using (Entities2 db = new Entities2())
        {
            var student = (from s in db.Students select s).ToList();

            cboSID.DisplayMember = "SID";
            cboSID.ValueMember = "SID";
            cboSID.DataSource = student;
        }

        using (Entities2 db = new Entities2())
        {
            var course = (from c in db.Courses select c).ToList();

            cboCID.DisplayMember = "CID";
            cboCID.ValueMember = "CID";
            cboCID.DataSource = course;
        }
    }

最佳答案

    private void btnAdd_Click(object sender, EventArgs e)
    {
        using (Entities2 db = new Entities2())
        {
            int SID = Convert.ToInt32(cboSID.SelectedItem.ToString());
            int CID = Convert.ToInt32(cboCID.SelectedItem.ToString());
            int got_marks = Convert.ToInt32(txtMark.Text);

            Student_Course marks = db.Student_Course.Where(sc => sc.SID == SID && c.CID == CID ).FirstOrDefault();
            if( marks!= null ){
              marks.Mark = got_marks;
            }else{
               db.Student_Course.Add(new Student_Course{
                    SID = SID,
                    CID = CID,
                    Mark = got_marks
               });

            }


            db.SaveChanges();
            MessageBox.Show("Marks Added");
        }

        using (Entities2 db = new Entities2()) //link combobox and DataGridView to List in Student_Course
        {
            var studentCourse = from c in db.Student_Course select new { SID = c.SID, Mark = c.Mark };

            editDataGridView.DataSource = studentCourse.ToList();
        }

        using (Entities2 db = new Entities2())
        {
            var student = (from s in db.Students select s).ToList();

            cboSID.DisplayMember = "SID";
            cboSID.ValueMember = "SID";
            cboSID.DataSource = student;
        }

        using (Entities2 db = new Entities2())
        {
            var course = (from c in db.Courses select c).ToList();

            cboCID.DisplayMember = "CID";
            cboCID.ValueMember = "CID";
            cboCID.DataSource = course;
        }
    }

关于c# - 如何从两个表中获取信息并将其添加到单独的表中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38886931/

10-10 23:24
查看更多