我试图将多个子记录添加到数据库中,但是只有最后一项被插入数据库中。

模型

public string[] CourseID { get; set; }
public SelectList CourseList { get; set; }


控制者

StudentWalkInn _studentWalkInn = new StudentWalkInn();
....
....
//CourseId is of type string[]
if (mdlWalkInn.CourseID.Length > 0)
{
   StudentWalkInnCourse _studentCourse = new StudentWalkInnCourse();
   foreach (var courseId in mdlWalkInn.CourseID)
   {
       _studentCourse.CourseID=Convert.ToInt32(courseId);
       _studentWalkInn.StudentWalkInnCourses.Add(_studentCourse);
   }
}

_db.StudentWalkInns.Add(_studentWalkInn);
int i = _db.SaveChanges();
if (i > 0)
{
       //success message
}

最佳答案

之所以只添加最后一个项目,是因为您一直添加相同的实例。在循环中更改ID时,LINQ2SQL会将其解释为ID的更改,而不是新项目的添加。

在循环的每次迭代中添加不同的实例应该可以解决此问题:

foreach (var courseId in mdlWalkInn.CourseID)
{
    var _studentCourse = new StudentWalkInnCourse {
        CourseID = Convert.ToInt32(courseId)
    };
    _studentWalkInn.StudentWalkInnCourses.Add(_studentCourse);
}

10-07 12:03