2012-03-10 24 views
5

Mam więc dwie tabele, faktury i faktury. Po usunięciu faktury chciałbym, aby wszystkie powiązane faktury również zostały usunięte.Kaskadowe usuwanie w Entity Framework

Zaktualizowałem relację w SQL Server, aby usunąć kaskadę po usunięciu faktury. Entity Framework nie rozpoznało tej zmiany, ale przeczytałem, że muszę ręcznie zaktualizować EDMX, aby wykonać usuwanie kaskadowe.

Również w widoku projektu mojego EDMX, kliknąłem na temat relacji między dwiema tabelami i sprawdzone właściwości, aby spróbować ustawić mój kaskadowe usuwanie

enter image description here

Jak widać, istnieją dwie właściwości OnDelete: End1 OnDelete i End2 OnDelete

Którego ustawienia muszę ustawić na Cascade?

Odpowiedz

5

Jeśli Koniec 1 jest główną relacją (tj. Fakturą, która zawiera faktury), to ma sens, aby kaskadowo usunąć.

7

początkowo byłem zdezorientowany o tym, jak dobrze, a powodem było to, że nie był pewien, czy co to było pole Nawigacja Property lub pole Rola Nazwa opisanego jaki obiekt koniec reprezentowany, co odpowiedź jako Devidigitals nieskuteczne.

A odpowiedź brzmi, że koniec jest opisany przez pole nazwa roli.

Więc jeśli wiemy, że chcemy usunąć wszystkie InvoiceItems dla faktury gdy faktura w pytaniu zostanie usunięty, to zapewne wiesz, że powinniśmy ustawić onDelete dla faktury oraz wyszukiwanie specyficzna koniec, który reprezentuje fakturę w relacji, szukaj końca, w którym nazwa roli to "Faktura". W powyższym przykładzie jest to Koniec1.

Może to być oczywiste, jeśli je znasz, ale nie, jeśli nie.

+0

Widzę, że edytowałeś swój wpis, aby powiedzieć, że End2 powyżej to nazwa roli "Faktura". Czy nie powinno to być End1? –

+0

@KyleW Oh my, oczywiście masz rację. Dzięki za powiadomienie mnie. – Alex