web-dev-qa-db-fra.com

Comment WillCascadeOnDelete dans Entity Framework fonctionne-t-il?

Si je comprends bien, si je supprime une ligne parent, ses enfants doivent être supprimés si j'active la cascade lors de la suppression. Cependant, d'après mes tests, cela ne semble pas fonctionner du tout. Peu importe si je règle WillCascaseOnDelete sur true ou false, il définit simplement la clé étrangère de ses enfants sur null. Cela pose un autre problème, je dois définir la clé étrangère avec une valeur nullable, sinon, SaveChange lèvera une exception. Est-ce un défaut ou un comportement souhaité?

16
newman

En effet, vos clés étrangères (enfant) sont nulles. Par défaut, lors de la suppression du parent, si la clé étrangère de la relation est nullable, EF le supprime et définit la clé étrangère sur null. Si la clé étrangère n’est pas NULL, l’enfant sera supprimé (le comportement que vous recherchez?).

Vous pouvez modifier ce comportement par défaut ici

11
Matt Cotton

Assurez-vous que vous avez sélectionné Cascade comme règle de suppression dans la fenêtre Relation de clé étrangère de SQL Server.

0
asr