私はEF4を使用していて、アイテムの更新と削除の問題が多かったです。 私は挿入に満足していますが、更新と削除ではわかりません。多対多のEntity Frameworkを削除/更新します。
私は3つのテーブルと
教室の表
ClassID-ClassName
学生の表
StudentID-StudentName
StudentClass表
に一致する3 DTOクラスがあるとし0StudentID-ClassID ///Happy all works I am using existing students to populate the class. Fine. private void InsertClassRoom(ClassRoomDto classRoomDto) { using (var ctx = new TrainingContext()) { //Convert dto to Entity var classRoomEntity = new ClassRoom { ClassID = classRoomDto.ClassId, ClassName = classRoomDto.ClassName }; foreach (var studentInClass in classRoomDto.Students) { Student student = ctx.Students.Where(x => x.StudentID == studentInClass.StudentId).SingleOrDefault(); classRoomEntity.Students.Add(student); } ctx.AddToClassRooms(classRoomEntity); ctx.SaveChanges(); } }
しかし、私は何をすべきか分からない2つのシナリオがあります。
- 更新教室名
- 追加1人の学生
- Update 1人の学生
上の名前は、クラスから生徒を削除します。
どうすればよいですか?
これはアップデートで私の試みです:すべての
private void UpdateClassRoom(ClassRoomDto classRoomDto)
{
using (var ctx = new TrainingContext())
{
var classRoomEntity = new ClassRoom { ClassID = classRoomDto.ClassId, ClassName = classRoomDto.ClassName };
foreach (var studentDto in classRoomDto.Students)
{
if (studentDto.StudentId == 0)
{
//it's a new student add it to the classroom
Student student = new Student { StudentID = studentDto.StudentId, StudentName = studentDto.StudentName };
classRoomEntity.Students.Add(student);
}
else
{
//Alter name of the student
Student student = ctx.Students.Where(x => x.StudentID == studentDto.StudentId).SingleOrDefault();
//update name
student.StudentName = studentDto.StudentName;
//? what do I do finish this attach or ???
}
}
ctx.AddToClassRooms(classRoomEntity);
ctx.SaveChanges();
}
}
public void DeleteStudent(ClassRoomDto classRoomDto)
{
using (var ctx = new TrainingContext())
{
//lost on how to delete a student in many to many
}
}
FANTASTIC.THANKSあなたの助けを借りて!! EFを学ぼうとしていて、私は本当のプロジェクトをやっています。あなたの助けは驚異的です。 – user9969
がんばろう! – Yakimych
SUPEEEEEEEEEEER –