Suppression en cascade d'une relation un à zéro ou une dans Entity Framework
Dans un scénario que j'ai rencontré récemment, une relation un à zéro ou un a été établie entre deux classes POCO User et UserDetail. Cependant, lorsque vous essayez de supprimer l'enregistrement utilisateur, les contraintes de clé étrangère dans UserDetail empêchent la suppression de l'enregistrement utilisateur en raison du manque de suppressions en cascade.
Pour résoudre ce problème, l'API Fluent doit être utilisée dans DbContext. L'extrait de code suivant doit être ajouté :
<code class="language-csharp">protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<User>() .HasOptional(a => a.UserDetail) .WithOptionalDependent() .WillCascadeOnDelete(true); }</code>
Une relation un à zéro ou un entre User et UserDetail est établie à l'aide des méthodes HasOptional()
et WithOptionalDependent()
. La méthode WillCascadeOnDelete(true)
permet ensuite des suppressions en cascade pour cette relation.
Une fois ces modifications mises en œuvre, la suppression d'un enregistrement utilisateur déclenchera désormais automatiquement la suppression de l'enregistrement UserDetail associé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!