Estoy usando EF4 y tengo problemas con muchas actualizaciones y eliminaciones de elementos. Estoy contento con la inserción pero la actualización y la eliminación no pueden resolverlo.Eliminar/actualizar muchos a muchos Entity Framework. No puedo hacer que funcione
Supongamos que tengo 3 mesas y 3 clases dto que coincide
salón de clase Tabla
ClassID-ClassName
Tabla Estudiante
StudentID-StudentName
Tabla StudentClass
StudentID-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(); } }
Pero tengo 2 escenarios que no pueden imaginar qué hacer.
- actualizar el nombre de clase
- Añadir 1 estudiante
- actualizar el nombre de 1 estudiante
Eliminar un estudiante de la clase.
¿Cómo lo hago?
Este es mi intento en la actualización:
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 MUCHO POR SU AYUDA !! Estoy tratando de aprender EF y estoy haciendo un proyecto real y su ayuda ha sido fenomenal.GRACIAS. – user9969
Claro. ¡Buena suerte! – Yakimych
SUPEEEEEEEEEEER –