Cascade-Delete-Regel in EF 4.1 Code First bei Verwendung von Shared Primary Key-Association

Implementiert habe ich eine bidirektionale 1:1-Beziehung basiert auf diese Antwort:

Primär - /Fremdschlüssel Entity Framework

Definiere ich das bidirektionale Verhältnis so:

public class Student
{   
    public virtual int StudentId { get; set; }
    public virtual Anamnesis Anamnesis { get; set; }

    . . .
}

public class Anamnesis
{
    [Key, ForeignKey("Student")]
    public int AnamnesisId { get; set; }

    public virtual Student Student { get; set; }

    . . .
}

wo Schüler ist die wichtigste Person und der Anamnese ist es das Unternehmen, das Aktien der PK.

Nun möchte ich, dass die Beziehung hatte eine Regel Löschen = KASKADE. Eigentlich ist die Beziehung, die erstellt wird hat die Delete-Regel = KEINE AKTION, wie in der folgenden Abbildung:

Cascade-Delete-Regel in EF 4.1 Code First bei Verwendung von Shared Primary Key-Association

Wenn ich Sie manuell löschen Sie diese relation in die Tabelle Eigenschaften-Fenster und fügen Sie andere Beziehung mit Regel Löschen = KASKADE, der code funktioniert wie ich erwarte, die mir erlaubt zu löschen, ein Student, und es ist gemeinsame Anamnese, die hat die gleiche ID.

So, hier geht meine Frage:

Gibt es eine Möglichkeit der Verwendung von Daten Anmerkung (nicht Fluent-API) in meiner Klasse so, dass ich eine Beziehung mit Löschweitergabe Regel? Ich würde lieber mit Daten Anmerkung, aber wenn es nicht möglich ist, würde ich gerne mit etwas Fluent-API von code, macht diese Arbeit.

HINWEIS

Habe ich versucht die Fluent-API von code, der angezeigt wird, in diesem post. Es funktioniert nicht in meinem Fall, wo ich eine bidirektionale Eigenschaften.

  • Uhmmm... jetzt gepostet, dass ich die Frage sehe ich, dass ich vergessen habe die virtual Schlüsselwort für die AnamnesisId - Eigenschaft zu erfüllen, mit Ladislav ' s Antwort weiter oben verlinkt. Vielleicht ist das das problem. Muss ich antesten, es wieder und wieder. 😀
  • Können Sie zeigen, vollständigen code? EF code-first verwendet cascade löschen Sie standardmäßig jedes mal, wenn es möglich ist und meine beiden Beispiele im verlinkten Frage verwenden, wie gut.
  • es nochmal getestet und überprüft die relation in der Datenbank angelegt. Es bleibt das gleiche. Keine KASKADE. Also, das Schlüsselwort virtual ist nicht das problem. Der code, der definiert die Beziehung ist die, die ich oben zeige. Brauchen Sie sonst noch etwas?
  • Können Sie testen, dies gegen volle SQL-server?
  • Ich würde es testen, aber @Morteza zeigte, wie man diese umsetzen mit Fluent-API von code. Trotzdem danke für deine Hilfe.
  • Ich habe das exakt gleiche Szenario und würde sehr gerne eine Lösung zu finden, die nicht Fluent-API. Ich benutze die code first Migrations-und sehen, dass der foreign key wird nicht erstellt, mit cascade löschen. Mit der Fluent-API-Lösung die migration code hat mit cascade löschen. Ich habe versucht mit [Erforderlich], aber es scheint nicht zu haben keine Wirkung. EF 5.0.

Schreibe einen Kommentar