Удалить / Обновите многие ко многим Entity Framework. Не могу заставить его работать

Я использую EF4 и имею проблемы со многими или многими обновлениями и удалениями элемента. Я доволен вставкой, но обновление и удаление не могут понять это из.

Предположим, у меня есть 3 таблицы и 3 класса dto, которые соответствуют

  1. ClassRoom Table

      ClassID-ClassName 
     
  2. Student Table

      StudentID-StudentName 
     
  3. 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 сценария, по которым я не могу понять, что делать.

  1. Обновить название класса
  2. Добавить 1 ученика
  3. Обновить имя для 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 
    }
}
6
задан Yakimych 24 November 2010 в 10:19
поделиться