MVC 一次操作将多个条目添加到数据库
MVC Add Multiple Entries to Database with one action
我正在尝试将新条目输入到名为 EmployeeCourseStatus
的 table 中,而另一个 table Course
已被编辑。
每当编辑 Course
条目以将其 Revision 增加 1 时,我需要它来更新 EmployeeCourseStatus
这样它将保留每个员工以前的课程历史记录并添加一个重复的条目新的修订号。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "CourseID,CourseName,SiteID,ValidFor,Rev,EffectiveDate,ExpiredDate")] Course course, EmployeeCourseStatu employeeCourseStatu,CourseViewModel courseViewModel)
{
if (ModelState.IsValid)
{
var OringinalRev = db.Courses.AsNoTracking().Where(P => P.CourseID == course.CourseID).Select(e => e.Rev)?.FirstOrDefault();
if (course.Rev == OringinalRev + 1)
{
foreach (var item in db.EmployeeCourseStatus.Where(e => e.CourseID==course.CourseID))
{
employeeCourseStatu.EmployeeID = item.EmployeeID;
employeeCourseStatu.CourseID = item.CourseID;
employeeCourseStatu.Status = null;
employeeCourseStatu.ValidFor = item.ValidFor;
employeeCourseStatu.CompletionDate = null;
employeeCourseStatu.Rev = item.Rev + 1;
db.EmployeeCourseStatus.Add(employeeCourseStatu);
}
}
db.Entry(course).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.SiteID = new SelectList(db.Sites, "SiteID", "SiteName", course.SiteID);
return View(course);
}
上面的代码只将一个条目保存到数据库中,据我所知,我每次循环 table.
时都会替换这些值
我怎样才能拥有它以便将每次迭代都添加到数据库中?
对于每次迭代,您都使用相同的 employeeCourseStatu 实例,因此您的列表包含相同的对象。每次更改其属性时,它们都会被覆盖。您需要在循环中实例化一个新对象,例如
var ecs = new EmployeeCourseStatu();
我正在尝试将新条目输入到名为 EmployeeCourseStatus
的 table 中,而另一个 table Course
已被编辑。
每当编辑 Course
条目以将其 Revision 增加 1 时,我需要它来更新 EmployeeCourseStatus
这样它将保留每个员工以前的课程历史记录并添加一个重复的条目新的修订号。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "CourseID,CourseName,SiteID,ValidFor,Rev,EffectiveDate,ExpiredDate")] Course course, EmployeeCourseStatu employeeCourseStatu,CourseViewModel courseViewModel)
{
if (ModelState.IsValid)
{
var OringinalRev = db.Courses.AsNoTracking().Where(P => P.CourseID == course.CourseID).Select(e => e.Rev)?.FirstOrDefault();
if (course.Rev == OringinalRev + 1)
{
foreach (var item in db.EmployeeCourseStatus.Where(e => e.CourseID==course.CourseID))
{
employeeCourseStatu.EmployeeID = item.EmployeeID;
employeeCourseStatu.CourseID = item.CourseID;
employeeCourseStatu.Status = null;
employeeCourseStatu.ValidFor = item.ValidFor;
employeeCourseStatu.CompletionDate = null;
employeeCourseStatu.Rev = item.Rev + 1;
db.EmployeeCourseStatus.Add(employeeCourseStatu);
}
}
db.Entry(course).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.SiteID = new SelectList(db.Sites, "SiteID", "SiteName", course.SiteID);
return View(course);
}
上面的代码只将一个条目保存到数据库中,据我所知,我每次循环 table.
时都会替换这些值我怎样才能拥有它以便将每次迭代都添加到数据库中?
对于每次迭代,您都使用相同的 employeeCourseStatu 实例,因此您的列表包含相同的对象。每次更改其属性时,它们都会被覆盖。您需要在循环中实例化一个新对象,例如
var ecs = new EmployeeCourseStatu();