我在一对多关系中有两个表employee
和employee course
。
需要:更新表employee
中的名称和编辑视图中courseid
表中的employeecourse
问题:在编辑视图中点击提交按钮时,它会删除所有数据并仅保存选定的
刚刚下拉课程的课程
如果点击提交
时(通过添加或删除课程)课程没有发生任何变化按住它删除所有
代码逻辑
我尝试使用逻辑删除所有数据,点击提交然后保存所有数据
更改后
意思是提交按钮执行两项任务
以前为员工编辑视图
在此员工的编辑视图中完成所有更改后添加课程
见下图
码
model class EditEmployeeVm
public class EditEmployeeVm
{
public int Id { set; get; }
public string Name { get; set; }
public List<SelectListItem> Courses { get; set; }
public int[] CourseIds { set; get; }
public List<CourseVm> ExistingCourses { set; get; }
}
public class CourseVm
{
public int Id { set; get; }
public string Name { set; get; }
}
in edit function get i pass data to edit view
public ActionResult Edit(int id)
{
var vm = new EditEmployeeVm { Id = id };
var emp = db.Employees.FirstOrDefault(f => f.Id == id);
vm.Name = emp.Name;
vm.ExistingCourses = db.EmployeeCourses
.Where(g => g.EmployeeId == id)
.Select(f => new CourseVm
{
Id = f.Id,
Name = f.Course.CourseName
}).ToList();
vm.CourseIds = vm.ExistingCourses.Select(g => g.Id).ToArray();
vm.Courses = db.Courses.Select(f => new SelectListItem
{
Value = f.Id.ToString(),
Text = f.CourseName
}).ToList();
return View(vm);
}
[HttpPost]
public ActionResult Edit(EditEmployeeVm model)
{
**//i need to save name employee changes in employee table and all courses changes in emloyeecourse table
//what is wrong here**
var emp = db.Employees
.Include(e => e.EmployeeCourses)
.FirstOrDefault(f => f.Id == model.Id);
foreach (var eec in emp.EmployeeCourses.ToList())
{
db.EmployeeCourses.Remove(eec);
}
foreach (var couseid in model.CourseIds)
{
db.EmployeeCourses.Add(new EmployeeCourse { CourseId = couseid, EmployeeId = emp.Id });
}
db.SaveChanges();
return View();
}
更新
public ActionResult Edit(EditEmployeeVm model)
{
var emp = db.Employees.FirstOrDefault(f => f.Id == model.Id);
foreach (var couseid in model.CourseIds)
{
db.EmployeeCourses.Add(new EmployeeCourse { CourseId = couseid, EmployeeId = emp.Id });
db.SaveChanges();
}
return View();
}
我在更新部分尝试上面的代码 我可以在点击提交按钮时添加数据并保存 但是点击删除按钮到jquery当然的问题 它删除它但不保存数据库中删除的更改 这样当再次打开编辑视图时,我看到之前删除的项目 单击“提交”按钮以保存在数据库中删除的项目
时如何解决该问题