2017-10-02 5 views
5

Ich muss über Möglichkeiten der Deaktivierung von Kaskadenlöschung in EF Core 2 weltweit wissen. Jede Hilfe wird geschätzt.Deaktiviere Kaskadenlöschung auf EF Core 2 global

In EF 6.x verwenden wir folgende Code Kaskade löscht auf beide OneToMany und ManyToMany realtions zu deaktivieren:

builder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 
builder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); 

Antwort

9

leider derzeit EF Core (spätestens zu diesem Zeitpunkt v2.0) keine gute Art und Weise aussetzen um die Konventionen global zu kontrollieren.

Die standardmäßige EF Core 2.0-Konvention verwendet DeleteBehavior.Restrict für erforderliche und DeleteBehavior.ClientSetNull für optionale Beziehungen. Was ich als Workaround vorschlagen kann, ist eine typische Metadatenmodellschleife am Ende der OnModelCreating Überschreibung. In diesem Fall suchen Sie alle bereits entdeckten Beziehungen und ändern sie entsprechend:

+0

Danke für die Antwort. Enthält 'cascadeFKs' hier nur 'one-to-many' Relationen oder beinhaltet es auch 'many-to-many' Relationen? –

+1

In EFC gibt es derzeit keine speziellen 'Viele-zu-Viele'-Beziehungen (sie werden mit 2' Eins-zu-Vielen' emuliert). Um Ihre Frage zu beantworten, enthält 'cascadeFks' alle Beziehungen -' Eins-zu-Viele' und 'Eins-zu-Eins'. –