2010-11-11 12 views
29

estoy usando EF y cuando hago esto:niño eliminar objetos de Entity Framework

  foreach (var reg in detail.Regs) 
      { 
       this.db.Regs.DeleteObject(reg); 
      } 

me sale esto:

Collection was modified; enumeration operation may not execute. 

Lo que estoy haciendo mal aquí ???

Respuesta

80

La razón de esto se debe a que elimina los objetos del contexto, EF se actualiza activamente el Regs de navegación recuento de propiedad que significa que los detail.Regs está siendo cambiado recogida durante el foreach bucle que siempre causa la excepción que estás recibiendo

Puede crear un nuevo objeto de colección y seguir eliminando de esta manera:

foreach (var reg in detail.Regs.ToList()) 
{ 
    this.db.Regs.DeleteObject(reg); 
} 

O incluso puede hacer que sea más limpia mediante el uso de LINQ ParaCada método:

detail.Regs.ToList().ForEach(r => db.Regs.DeleteObject(r)); 
+0

muchas gracias mucho ... eres una estrella ... :) – Shaz

+0

que obtiene todos los registros de la base de datos solo para que se eliminen no? – Marco

Cuestiones relacionadas