2

私は、学生が学校のコースに登録できるアプリを持っています。出席情報を準備するために、私はAttendanceテーブルのデータを入力する必要があります。私は通常、このように、このタスクを達成するでしょう:forループを使用して、ASP.NET MVCアプリケーションに複数の同様のデータベースエントリを追加する最もエレガントな方法はありますか? (C#)

Attendance newAttendace = new Attendance 
{ 
    CourseID = course.CourseID, 
    StudentID = thisStudent.StudentID, 
    AttendanceDay = 1, 
    Present = false 
}; 
db.Attendance.Add(newAttendance); 
db.SaveChanges(); 

しかし、私はコースが持っているすべての可能な出席の日のためにこれを行う必要がある - ので、学生はこのコースを受講することが20日がある場合は、私ができるようにする必要がありますAttendanceDay = 1から20の行を追加します。

私はこれをforループ内で行い、出席者1を何度も何度も繰り返して、データベースに「newAttendance」を20回追加してから、db.SaveChanges()コール - しかし、前にデータベースのエントリを入力するためのforループを行ったことがない - ASP.NET MVCのC#でこれを行うよりエレガントな方法はありますか?

+0

どのように各日の前にエントリが必要ですか?学生が出席すると、その時点でエントリを追加できませんか? –

+0

私はデザインの計画において、これがより良いやり方であるという結論に達しました。私は間違っている可能性がある。これについて議論していた:http://stackoverflow.com/questions/10317018/how-would-i-appropriately-design-a-viewmodel-to-edit-attendance-for-different-co – Ecnalyr

答えて

3

私はそれが正しい方法だと思います。しかし、db.SaveChanges()がループの外側にあることを確認してください。あなたはそれを一度だけ呼び出す必要があります

for(int i=0;i<20;i++) 
{ 
    Attendance newAttendace = new Attendance 
    { 
    CourseID = course.CourseID, 
    StudentID = thisStudent.StudentID, 
    AttendanceDay = 1, 
    Present = false 
    }; 
    db.Attendance.Add(newAttendance); 
} 
db.SaveChanges();