Ich habe eins zu eins Beziehung mit Fremdschlüsseln, aber die Cascade Delete
ist aus irgendeinem Grund nicht aktiviert. Der Beispielcode ist unten.Code erste eins zu eins aktivieren Kaskade löschen
public class AppRegistration
{
public int AppRegistrationId { get; set; }
[Required]
[StringLength(50)]
[Display(Name = "Username")]
public string UserName { get; set; }
[Required]
[StringLength(100)]
public string Password { get; set; }
[StringLength(20)]
public string StudentOrAgent { get; set; }
// navigation properties
public virtual AppStatus AppStatus { get; set; }
public virtual Agreement Agreement { get; set; }
public virtual AnotherTable AnotherTable { get; set; }
}
Die abhängige Tabelle mit einem Fremdschlüssel ist unten.
public class Agreement
{
[Key]
[ForeignKey("AppRegistration")]
public int AppRegistrationId { get; set; }
public DateTime DateAgreed { get; set; }
public virtual AppRegistration AppRegistration { get; set; }
}
Wenn ich versuche, einen Eintrag aus der generierten AppRegistrations
Tabelle zu löschen, erhalte ich eine Referenz Einschränkung Konflikt.
Ich habe versucht, [Required]
auf die Navigationseigenschaft in der abhängigen Tabelle, aber es tut nichts - der Update-Database
Befehl zeigt die No pending code-based migrations.
Nachricht. Irgendwelche Ideen? Vielen Dank.
Update: ich die folgende Fehlermeldung erhalten:
The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.AppStatus_dbo.AppRegistrations_AppRegistrationId". The conflict occurred in database "MVCapp", table "dbo.AppStatus", column 'AppRegistrationId'.
Danke für die Antwort:
UPDATE
Später ich Antwort direkt hier. Ich habe versucht, '[Required]' zu setzen, aber die 'Update-Database' der Code-Migration gibt 'No anstehende code-basierte Migrationen' zurück. Irgendeine Möglichkeit, dies zu umgehen? – erdinger
Ich könnte falsch liegen, aber ich denke, Sie würden nicht die erste Technik versuchen wollen, weil es fast unmöglich ist, eine Eins-zu-Eins-Beziehung zu erfüllen, die in beiden Richtungen erforderlich ist. Wenn Sie versuchen, die Vereinbarung einzufügen, erhalten Sie eine Constraint-Verletzung, weil AppRegistration nicht existiert und umgekehrt. – AaronLS
@ user2291748 Haben Sie vor dem Ausführen von update-database eine Migration hinzugefügt? Aaron, vielleicht hast du Recht, es ist nur etwas, das mir in den Sinn kam. – MattSull