我试图将多个子记录添加到数据库中,但是只有最后一项被插入数据库中。
模型
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);
}