Entity Framework Code zuerst - FOREIGN KEY Constraint-Problem

8

Ich bin neu in EF-Code ersten Prinzipal und derzeit ohne Ahnung, was zu tun ist .. Ich habe 2 POCO-Klassen ..

%Vor%

und

%Vor%

Meine Datenbankerstellung ist in Ordnung, aber wenn ich versuche, einige Daten mit dem benutzerdefinierten Initialisierer zu initialisieren, erhalte ich folgenden Fehler:

  

Einführung der FOREIGN KEY-Einschränkung "Problem_User" in die Tabelle   "Probleme" können Zyklen oder mehrere Kaskadenpfade verursachen. Geben Sie ON an   LÖSCHEN SIE KEINE MASSNAHME oder AKTUALISIEREN SIE KEINE MASSNAHME, oder ändern Sie andere FREMDSCHLÜSSEL   Einschränkungen.
  Constraint konnte nicht erstellt werden. Siehe vorherige Fehler.

Dies ist mein Initialisierer:

%Vor%

Was mache ich falsch? Vielen Dank im Voraus!

    
rjovic 09.09.2011, 15:11
quelle

1 Antwort

15

Das wird wegen Comments sein. EF verwendet standardmäßig Kaskadenlöschungen für Referenzen. In Ihrem Fall wird die Kaskadenlöschung von Benutzer erstellt - & gt; Problem, Benutzer - & gt; Kommentar aber auch von Problem - & gt; Kommentar. Wenn Sie User Cascading gelöscht haben, können Sie in den gleichen Kommentar Datensatz aus Problem und User kommen. Das ist in SQL Server nicht zulässig. Auf jeden Datensatz kann nur durch einen einzelnen kaskadierenden Löschpfad zugegriffen werden.

Um dies zu vermeiden, müssen Sie fluentes Mapping verwenden, um das kaskadierende Löschen auf eine Relation umzustellen (Sie müssen die Wahl treffen). Das Beispiel für Benutzer - & gt; Kommentar

%Vor%

Es kann andere Entitäten und Beziehungen geben, die dieses Problem in Ihrem Modell verursachen können, aber Comment sieht in Ihrem Beispiel offensichtlich aus.

    
Ladislav Mrnka 09.09.2011, 15:21
quelle