Jak rozumiem, jeśli usunę wiersz nadrzędny, jego dzieci powinny zostać usunięte, jeśli włączę kaskadę podczas usuwania. Jednak z moich testów to w ogóle nie działa. Nieważne, czy ustawię WillCascaseOnDelete na wartość true lub false, po prostu ustawi obcy klucz swoich dzieci na wartość null. Powoduje to inny problem, który muszę ustawić zerowy klucz obcy, w przeciwnym razie SaveChange rzuci wyjątek. Czy jest to wada lub pożądane zachowanie?Jak działa WillCascadeOnDelete w Entity Framework?
16
A
Odpowiedz
12
Dzieje się tak, ponieważ klucze obce (dziecko) są zerowe. Domyślnie podczas usuwania elementu nadrzędnego, jeśli klucz obcy w relacji jest zerowalny EF usunie element nadrzędny i ustawi klucz obcy na wartość null. Jeśli klucz obcy NIE JEST NULL, usunie dziecko (zachowanie, którego szukasz?).
Możesz zmienić to domyślne zachowanie here
0
Upewnij się w oknie klucz obcy relacjami w SQL Server, wybrałeś Cascade jako regułę usuwania.
Powiązane problemy
- 1. Adnotacje danych jednostek Entity równoważne .WillCascadeOnDelete (false);
- 2. Usuwanie kaskady Entity Framework Migration jest zawsze prawdziwe, nawet WillCascadeOnDelete (false) w konfiguracji
- 3. Entity Framework zmiana typu identyfikatora
- 4. Metoda Entity Framework działa bardzo wolno
- 5. Entity Framework 4 Funkcja Import nie działa
- 6. Entity Framework w .NET?
- 7. Porównanie Rowversion w Entity Framework
- 8. Unicode z Entity Framework
- 9. Jak aktualizować podmioty powiązane w Entity Framework
- 10. Entity Framework i problemem
- 11. zagnieżdżonych zapytań w Entity Framework
- 12. Jak utworzyć Entity Framework ObjectContext?
- 13. jeden do wielu relacji w Entity Framework 6
- 14. Entity Framework + POCO
- 15. Entity Framework Kolejność Zawiera
- 16. Kaskadowe usuwanie w Entity Framework
- 17. Jak dodać tabelę w Entity Framework?
- 18. Jak zmienić utwory śledzenia w Entity Framework
- 19. Jak korzystać z transakcji w Entity Framework?
- 20. Jak mogę zobaczyć zmiany w Entity Framework?
- 21. Jak przeprowadzić wyszukiwanie w Entity Framework 6?
- 22. Entity Framework generic
- 23. Entity Framework 6.1.0 SaveChangesAsync
- 24. Entity Framework i DbSet
- 25. Entity Framework i Równoległość
- 26. Entity Framework UnintentionalCodeFirstException
- 27. Entity Framework Validation & usage
- 28. Entity Framework odświeżania danych
- 29. Entity Framework 4 Repository?
- 30. Entity Framework Query Optimization
Występuje ten sam problem, mój klucz obcy jest ustawiony jako 'IsRequired();', relacja ma wartość '.WillCascadeOnDelete (true)', ale nadal otrzymuję wyjątek podczas próby usunięcia obiektu nadrzędnego. –
@UwConcept, Spodziewam się, że wyjątek zostanie zgłoszony, jeśli określisz relację klucza obcego jako 'IsRequired();' ponieważ Entity Framework nie może ustawić wartości na 'null' po usunięciu obiektu nadrzędnego. – weenoid
@weenoid Dziękujemy za odpowiedź. Ale czy nie byłoby bardziej sensowne usuwanie obiektu podrzędnego zamiast ustawiania wartości NULL w polu niepodlegającym zerowaniu? Tylko moje dwa centy. –