我有一个方法应该根据复选框刻度更新多对多表。这里的多对多关系位于Exam
实体和Objectives
实体之间。但是,我不知道如何实施它。
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "id,Date,TotalMarks,ObjList")] ViewModel viewModel)
{
if (ModelState.IsValid)
{
var selectedObj = viewModel.ObjList.Where(o => o.isAssigned == true);
var exam = new Exam()
{
id = viewModel.id,
ExamDate = viewModel.Date,
TotalMarks = viewModel.TotalMarks,
};
if(selectedObj == null)
{
exam.Objectives = new List<Objectives>();
}
//how do i implement this here?
//exam.Objectives.Add(obj)
db.Entry(exam).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(viewModel);
}
如代码所示,多对多表的更新基于ObjList
中的View Model
。我提到在线教程他们使用的方法如下:
exam.Obj.Add(obj);
or
exam.Obj.Remove(obj);
但是,我不知道如何实现这一点,因为这些方法正在将model
本身传递到method
。我的情况是将viewmodel
传递给方法,因此我必须在保存到exam
之前创建db
变量。
那么,如何更新多对多表?
答案 0 :(得分:0)
您可以将ObjList视图模型转换为8
模型,然后添加到上下文中。
Objective