Jestem całkowicie nowy w Entity Framework, więc proszę wybaczyć, jeśli moja logika jest przekrzywiona/to jest sposób, w jaki rzeczy już działają, ale pracuję nad aplikacją, w której :Entity Framework - Efektywnie usuń wszystkie encje podrzędne bez ich ładowania
- przechowywać Informacje dla rodziców w jednej tabeli z kluczem podstawowym =
ParentId
- Dla każdego
ParentId
, przechowywać tysiące rekordów w tabeli podrzędnej z relacji klucza obcego jeden-do-wielu na parentId.
Więc, jeśli informacja się nie zmienia dla rodzica (który może zdarzyć się dość często), co chciałbym zrobić, to mieć swój program wykonać równowartość:
DELETE FROM ChildTable WHERE ParentId = 'xx'
Przed aktualizacją dziecko tabela z nowymi/zaktualizowanymi wartościami dla tego samego ParentId.
Z tego co widziałem, tak bym zrobił to albo:
- umieścić w rzeczywistej polecenia SQL za pomocą
ctx.Database.ExecuteSqlCommand()
kind-of-concept - na pewnym poziomie , w rzeczywistości przechodzimy przez elementy potomne i ustawiamy je do usunięcia przed aktualizacją kontekstu bazy danych (co wydaje się być bardzo nieefektywne, ponieważ przypuszczam, że będzie musiało je pobrać z bazy danych, aby to zrobić i wszystko czego chcę zrobić to po prostu usunąć je wszystkie).
Jaki jest prawidłowy sposób to zrobić w EF w najbardziej efektywny sposób możliwe?
Ewentualny duplikat http://stackoverflow.com/questions/2519866/how-do-i-delete-multiple-rows-in-entity-framework- without -foreach – Stilgar
@Stilgar, dzięki za wskazanie tego, zrobiłem zobacz to pytanie, ale nadal jestem zdezorientowany (może to, czego potrzebuję, to tylko więcej wyjaśnień), czy to pociągałoby za sobą zapętlenie wszystkich elementów dziecka czy nie ... Ta część wciąż nie ma dla mnie sensu ... –
Jeśli martwisz się o wydajność, wystarczy napisać procedurę składowaną lub surowy SQL. EF ma doskonałe wsparcie w tym zakresie. – Stilgar