在多对多关联表上执行标准SQL语句,以在编辑方法中删除多对多关联条目。可以通过使用DbContext来执行SQL语句。
以下是示例代码:
public async Task Edit(int id, StudentViewModel model)
{
if (ModelState.IsValid)
{
var student = await _context.Students
.Include(s => s.StudentCourses)
.SingleOrDefaultAsync(s => s.Id == id);
if (student != null)
{
//delete all existing student courses
var deleteSql = $"DELETE FROM StudentCourses WHERE StudentId = '{id}'";
await _context.Database.ExecuteSqlCommandAsync(deleteSql);
//update student properties
student.Name = model.Name;
student.Age = model.Age;
//add newly selected student courses
foreach (var courseId in model.SelectedCourseIds)
{
var studentCourse = new StudentCourse
{
StudentId = id,
CourseId = courseId
};
_context.Add(studentCourse);
}
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
}
return View(model);
}