我正在尝试加入表格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/