Come ho capito, se elimino una riga genitore, i suoi figli dovrebbero essere cancellati se accendo la cascata su delete. Tuttavia, dai miei test, non sembra funzionare affatto. Non importa se imposto WillCascaseOnDelete su true o false, semplicemente imposta la chiave esterna dei suoi figli su null. Questo sta causando un altro problema che devo impostare la chiave esterna nullable, altrimenti, SaveChange genererà un'eccezione. È un difetto o un comportamento desiderato?Come funziona WillCascadeOnDelete in Entity Framework?
16
A
risposta
12
Questo perché le chiavi esterne (figlio) sono annullabili. Per impostazione predefinita, quando si elimina il genitore, se la chiave esterna della relazione è nullable, EF cancella il genitore e imposta la chiave esterna su null. Se la chiave esterna NON è NULL, eliminerà il bambino (il comportamento che stai cercando?).
È possibile modificare questo comportamento predefinito here
0
Assicurarsi che nella finestra di chiave esterna di relazione in SQL Server, è stata selezionata come regola Cascade Delete.
Problemi correlati
- 1. Entity Framework: Perché il metodo WillCascadeOnDelete() viene ignorato?
- 2. uno a molti in Entity Framework 6
- 3. Modifica Entity Framework Tipo ID
- 4. Microsoft Jet DB funziona con Entity Framework?
- 5. Parallel non funziona con Entity Framework
- 6. Perché TransactionScope non funziona con Entity Framework?
- 7. paging in Entity Framework
- 8. risparmio in Entity Framework
- 9. pigro carico non funziona in Entity Framework 5
- 10. Entity Framework POCO SaveChanges() in aggiornamento non funziona?
- 11. Include condizionale() in Entity Framework
- 12. Unicode con Entity Framework
- 13. Entity framework PostgreSQL
- 14. Come creare Entity Framework ObjectContext?
- 15. Entity Framework-registrazione Spiegazione
- 16. Come riutilizzare le proiezioni in Entity Framework?
- 17. Entity Framework 7 in Xamarin.Forms
- 18. Entity Framework e DbSet
- 19. Entity Framework senza database
- 20. Blocco tabelle in Entity Framework
- 21. LoadProperty in Entity Framework 5
- 22. Entity Framework + distribuzione SQLite
- 23. Entity Framework + POCO
- 24. Mock AsNoTracking Entity Framework
- 25. Il framework Entity `AsNoTracking` non funziona con la proiezione anonima
- 26. Includi che non funziona con query Entity Framework
- 27. Entity Framework generico
- 28. Entity Framework XML Query
- 29. Views and Entity Framework
- 30. Entity Framework UnintentionalCodeFirstException
Sto riscontrando lo stesso problema, la mia chiave esterna è impostata come 'IsRequired();', la relazione ha '.WillCascadeOnDelete (true)' ma ottengo comunque un'eccezione quando provo a eliminare l'oggetto genitore. –
@UwConcept, mi aspetto che venga generata un'eccezione se è stata specificata la relazione di chiave esterna come 'IsRequired();' poiché Entity Framework non può impostare il valore su 'null' dopo la rimozione dell'oggetto padre. – weenoid
@weenoid Grazie per la risposta. Ma non avrebbe più senso eliminare quindi l'oggetto figlio invece di impostare un valore NULL in un campo non annullabile? Solo i miei due centesimi. –