MVC只需一项操作即可向数据库添加多个条目

时间:2019-07-24 15:17:33

标签: c# model-view-controller entity-framework-6

当另一个表EmployeeCourseStatus被编辑后,我试图在名为Course的表中输入新条目。

每当编辑Course条目以将其修订版增加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);
    }

上面的代码仅将一个条目保存到数据库中,据我了解,因为每次循环遍历该表时都要替换这些值。

我如何拥有它,以便将每个迭代添加到数据库中?

1 个答案:

答案 0 :(得分:1)

对于每次迭代,您使用相同的employeeCourseStatu实例,因此您的列表包含相同的对象。每次更改其属性时,它们都会被覆盖。您需要在循环中实例化一个新对象,例如

var ecs = new EmployeeCourseStatu();