在编辑视图中,当我在员工姓名中编辑时,然后单击保存按钮进行保存 它再次插入课程,以便找到两次课程。
下面的图片显示
when update it duplicate courses
我有这个型号Cusomemp2
这是用于两个表中的更新数据的自定义模型
员工和员工课程
public class Cusomemp2
{
public int Id { get; set; }
public string Name { get; set; }
public List<EmployeeCourse> empcourses { get; set; }
}
}
当我需要更新员工和员工课程表时
我在httppost中编写以下代码
[HttpPost]
public ActionResult Edit(Cusomemp2 custom)
{
Employee e1 = db.Employees.Find(custom.Id);
e1.Name = custom.Name;
e1.EmployeeCourses = custom.empcourses;
db.SaveChanges();
return View();
}
在编辑视图中我将jquery写成如下
var index = 0;
$("#CourseId").change(function () {
var id = $(this).val();
var txt = $("#CourseId option:selected").text();
$("#tb").append("<tr><td><input type = 'hidden' name='empcourses[" + index + "].CourseId' value='" + id + "'/></td><td>" + txt + "</td><td><input type='button' value='remove' class='r'</td></tr>")
index++;
});
$("#tb").on("click", ".r", function () {
$(this).parent().parent().hide();
$(this).parent().prev().prev().find("input").val("0");
});
button for save as following
<input type="submit" value="save" />
更新
[HttpPost]
public ActionResult Edit(Cusomemp2 custom)
{
var result = db.Employees
.Where(p => p.Id == custom.Id)
.Include(c => c.EmployeeCourses)
.FirstOrDefault();
if (custom.empcourses.Any())
{
foreach (var ec in result.EmployeeCourses.ToList())//to remove existing EmployeeCourses
{
db.EmployeeCourses.Remove(ec);
db.SaveChanges();
}
}
result.Name = custom.Name;
result.EmployeeCourses = custom.empcourses;
db.SaveChanges();
return View();
}
更新
直到现在问题没有解决上面这段代码的结果删除所有课程
以便我添加新链接以删除
how to delete assigned courses only not all courses for employee
答案 0 :(得分:0)
您可以尝试如下所示。
注意: Ef不会自动更新子条目。所以你必须手动完成,如下所示。
[HttpPost]
public ActionResult Edit(Cusomemp2 custom)
{
var result = db.Employees
.Where(p => p.Id == custom.Id)
.Include(c => c.EmployeeCourses)
.FirstOrDefault();
if(custom.empcourses.Any())
{
foreach (var ec in result.EmployeeCourses.ToList())//to remove existing EmployeeCourses
{
db.EmployeeCourses.Remove(ec);
db.SaveChanges();
}
}
result.Name = custom.Name;
result.EmployeeCourses = custom.empcourses;
db.SaveChanges();
return View();
}