如何使用View Model更新多对多表

时间:2016-12-30 13:05:49

标签: c# asp.net asp.net-mvc

我有一个方法应该根据复选框刻度更新多对多表。这里的多对多关系位于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变量。

那么,如何更新多对多表?

1 个答案:

答案 0 :(得分:0)

您可以将ObjList视图模型转换为8模型,然后添加到上下文中。

Objective