Я использую EF4 и имею проблемы со многими или многими обновлениями и удалениями элемента. Я доволен вставкой, но обновление и удаление не могут понять это из.
Предположим, у меня есть 3 таблицы и 3 класса dto, которые соответствуют
ClassRoom Table
ClassID-ClassName
Student Table
StudentID-StudentName
StudentClass Таблица
StudentID-ClassID
/// Всем удачи! Я использую существующих студентов для заполнения класса. Хорошо.
private void InsertClassRoom (ClassRoomDto classRoomDto)
{
using (var ctx = new TrainingContext ())
{
// Преобразование dto в Entity
var classRoomEntity = new ClassRoom {ClassID = classRoomDto.ClassId, ClassName = classRoomDto.ClassName};
foreach (var studentInClass в classRoomDto.Students)
{{{1} } Студент студент = ctx.Students.Where (x => x.StudentID == studentInClass.StudentId) .SingleOrDefault ();
classRoomEntity.Students.Add (student);
}
ctx.AddToClassRooms (classRoomEntity);
ctx .SaveChanges ();
}
}
Но у меня есть 2 сценария, по которым я не могу понять, что делать.
Удалить ученика из класса.
Как мне это сделать?
Это моя попытка обновления:
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
}
}