2010-11-11 14 views
29

sto usando EF e quando faccio questo:bambino eliminare gli oggetti in Entity Framework

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

ottengo questo:

Collection was modified; enumeration operation may not execute. 

Quello che sto facendo male che qui ???

risposta

80

La ragione di ciò è perché, come si eliminano gli oggetti dal contesto, EF è aggiornare attivamente il Regs navigazione conteggio proprietà che significa che i detail.Regs collezione viene modificato durante la foreach ciclo che sempre causa l'eccezione che stai ricevendo.

È possibile creare un nuovo oggetto di raccolta e mantenere l'eliminazione da essa come questo:

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

O ancora si può rendere più pulita utilizzando LINQ PerOgni metodo:

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

lo ringraziano così molto ... sei una stella .... :) – Shaz

+0

Che ottiene tutti i record dal database solo per averli cancellati no? – Marco

Problemi correlati