我试图将多个子记录添加到数据库中,但只有最后一项被插入到数据库中。
型号
public string[] CourseID { get; set; }
public SelectList CourseList { get; set; }
Controller
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);
}
关于c# - 为什么在添加多个项目时只将最后一个项目插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957345/