2012-03-10 15 views
5

Quindi ho due tabelle, fatture e InvoiceItems. Quando elimino una fattura, vorrei che tutti i relativi InvoiceItems siano eliminati.Eliminazione a cascata in Entity Framework

Ho aggiornato la relazione in SQL Server per eseguire un'eliminazione a catena quando elimino una fattura. Entity Framework non ha riconosciuto tale modifica, tuttavia, ma ho letto che ho bisogno di aggiornare manualmente il mio EDMX per fare l'eliminazione a cascata.

bene nella vista di disegno della mia EDMX, ho cliccato sul rapporto tra le due tabelle, e controllato le proprietà per cercare di impostare la mia cascata eliminare

enter image description here

Come potete vedere, ci sono due proprietà OnDelete: End1 OnDelete ed End2 OnDelete

Quale è necessario impostare su Cascade?

risposta

5

Se End1 è il principale della relazione (cioè la fattura con articoli della fattura), allora ha senso che venga eliminata a cascata.

7

inizialmente ero confuso su questo pure, e il motivo era che non ero sicuro di quello che se fosse il campo Esplorazione della struttura o il campo Nome ruolo che descriveva quello oggetto rappresentato un fine, rendendo una risposta come inefficienti.

E la risposta è che la fine è descritta dal campo nome ruolo.

Quindi, se sappiamo che vogliamo eliminare tutti InvoiceItems per un fattura quando la fattura in questione viene cancellato, probabilmente conosciamo che dobbiamo impostare l'OnDelete per il fattura, e per trovare la specifica fine che rappresenta la fattura nella relazione, cercare la fine in cui il nome del ruolo è "Fattura". Nell'esempio sopra, questo è End1.

Questo potrebbe essere ovvio se lo sai, ma non se non lo fai.

+0

Vedo che hai modificato il tuo post per dire che End2 sopra era il nome del ruolo "Fattura". Non dovrebbe essere End1? –

+0

@KyleW Oh mio, certo che hai ragione. Grazie per avermi informato. – Alex

Problemi correlati