Wie ich verstehe, wenn ich eine übergeordnete Zeile lösche, sollten seine Kinder gelöscht werden, wenn ich beim Löschen kaskadieren. Von meinen Tests scheint es jedoch überhaupt nicht zu funktionieren. Egal, ob ich WillCascaseOnDelete auf true oder false setze, es setzt einfach den Fremdschlüssel seiner Kinder auf null. Dies verursacht ein weiteres Problem, dass ich den Fremdschlüssel Null schreiben muss, sonst wird SaveChange Ausnahme auslösen. Ist das ein Defekt oder ein gewünschtes Verhalten?Wie funktioniert WillCascadeOnDelete in Entity Framework?
16
A
Antwort
12
Dies liegt daran, dass Ihre Fremdschlüssel (untergeordnet) nullfähig sind. Wenn der Fremdschlüssel in der Beziehung Nullwerte enthält, löscht EF beim Löschen des übergeordneten Elements standardmäßig das übergeordnete Element und setzt den Fremdschlüssel auf null. Wenn der Fremdschlüssel NICHT NULL ist, löscht er das Kind (das Verhalten, nach dem Sie suchen?).
Sie dieses Standardverhalten here
0
Stellen Sie sicher, auf der Fremdschlüsselbeziehung Fenster in SQL Server ändern können, haben Sie Cascade als Delete Regel ausgewählt.
Verwandte Themen
- 1. Entity Framework: Warum WillCascadeOnDelete() Methode ignoriert wird?
- 2. Entity Framework Migration Kaskadenlöschung ist immer wahr sogar WillCascadeOnDelete (false) in der Konfiguration
- 3. Entity Framework Identitätsspalte funktioniert nicht
- 4. Entity Framework-Eigenschaften wie funktioniert es
- 5. In Entity Framework Wie
- 6. Wie Entity Framework Caching
- 7. Fehler beim Löschen der Child Entity in Entity Framework 6
- 8. Funktioniert Microsoft Jet DB mit Entity Framework?
- 9. Selbstreferenz in Entity Framework
- 10. Entity Framework 6 Lazy Loading funktioniert nicht
- 11. Entity-Framework Context.SaveChanges funktioniert überhaupt nicht
- 12. SaveChanges funktioniert nicht mit ADO.NET Entity Framework
- 13. DataBinding() funktioniert nicht mit Distinct() (Entity Framework)
- 14. ADO.NET Entity Framework SaveChanges() funktioniert nicht
- 15. Entity Framework Seed-Methode funktioniert nicht
- 16. Entity Framework Update Navigation Entity
- 17. Entity Framework funktioniert nicht auf IIS?
- 18. Paging in Entity Framework
- 19. Mapping in Entity Framework
- 20. Wie ändern Arbeiten in Entity Framework
- 21. Rowversion Vergleich in Entity Framework
- 22. Entity Framework Spalten-Entity-Korrelation?
- 23. Eine zu viele Beziehung in Entity Framework 6
- 24. Entity Framework One-to-One-Beziehung?
- 25. Wie InsertOrSelect mit Entity Framework
- 26. Entity Framework Code First - Eager Laden funktioniert nicht wie erwartet?
- 27. aktualisiert geerbt Entity in Entity Framework 7
- 28. Composite Primärschlüssel mit Entity Framework erstellen 4.1
- 29. Wie Entity Framework-Klassen anpassen?
- 30. Beitreten und in Entity Framework
Ich habe das gleiche Problem, mein Fremdschlüssel wird als 'IsRequired();' festgelegt, die Beziehung hat '.WillCascadeOnDelete (true)', aber ich bekomme immer noch eine Ausnahme beim Versuch, das Elternobjekt zu löschen. –
@UwConcept, würde ich erwarten, dass eine Ausnahme ausgelöst wird, wenn Sie die Fremdschlüsselbeziehung als 'IsRequired();' angegeben haben, da Entity Framework den Wert nach dem Entfernen des übergeordneten Objekts nicht auf 'null' setzen kann. – weenoid
@weenoid Danke für Ihre Antwort. Aber wäre es nicht sinnvoller, das untergeordnete Objekt zu löschen, anstatt einen NULL-Wert in einem nicht nullbaren Feld zu setzen? Nur meine zwei Cent. –