Heim >Backend-Entwicklung >C++ >Wie implementiert man Kaskadenlöschung für Eins-zu-Null-oder-Eins-Beziehungen im Entity Framework?
Kaskadenlöschung von Eins-zu-Null- oder Eins-Beziehungen im Entity Framework
In einem Szenario, auf das ich kürzlich gestoßen bin, wurde eine Eins-zu-Null- oder Eins-Beziehung zwischen zwei POCO-Klassen User und UserDetail hergestellt. Wenn jedoch versucht wird, den Benutzerdatensatz zu löschen, verhindern die Fremdschlüsseleinschränkungen in UserDetail, dass der Benutzerdatensatz gelöscht wird, da es keine kaskadierenden Löschvorgänge gibt.
Um dieses Problem zu lösen, muss die Fluent API in DbContext verwendet werden. Der folgende Codeausschnitt sollte hinzugefügt werden:
<code class="language-csharp">protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<User>() .HasOptional(a => a.UserDetail) .WithOptionalDependent() .WillCascadeOnDelete(true); }</code>
Mit den Methoden HasOptional()
und WithOptionalDependent()
wird eine Eins-zu-Null- oder Eins-Beziehung zwischen User und UserDetail hergestellt. Die WillCascadeOnDelete(true)
-Methode ermöglicht dann kaskadierende Löschvorgänge für diese Beziehung.
Nachdem diese Änderungen implementiert wurden, löst das Löschen eines Benutzerdatensatzes nun automatisch die Löschung des zugehörigen UserDetail-Datensatzes aus.
Das obige ist der detaillierte Inhalt vonWie implementiert man Kaskadenlöschung für Eins-zu-Null-oder-Eins-Beziehungen im Entity Framework?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!