2 Stimmen

Löschen in EF4 nicht möglich

Ich versuche, ein "AttendeeEvent" mit EF4 aus der Datenbank zu löschen, erhalte jedoch folgende Fehlermeldung:-

Die Operation ist fehlgeschlagen: Die Beziehung konnte nicht geändert werden, weil eine oder mehrere der Eigenschaften des Fremdschlüssels nicht nullbar sind. Wenn eine Beziehung geändert wird, wird die entsprechende Fremdschlüssel-Eigenschaft auf einen Nullwert gesetzt. Wenn der Fremdschlüssel keine Nullwerte unterstützt, muss eine neue Beziehung definiert werden, der Fremdschlüssel-Eigenschaft muss ein anderer Wert zugewiesen werden, der nicht null ist, oder das nicht verwandte Objekt muss gelöscht werden.

Mein Code lautet wie folgt :-

        public void UnRegisterCurrentUserForEvent(int eventId)
    {
        Attendee attendee = GetOrCreateAttendeeForCurrentUser();
        AttendeeEvent av = attendee.AttendeeEvents.SingleOrDefault(x => x.EventID == eventId);

        if(av != null)
        {
            attendee.AttendeeEvents.Remove(av);
        }

        this.ObjectContext.SaveChanges();
    }

Ich habe versucht, die End 2 On Delete von den Eigenschaften in der .edmx jedoch ändern, wenn ich auf Kaskade, erhalte ich einen Fehler: -

Fehler 1 Fehler 132: Die Operation kann nicht angegeben werden, da ihre Multiplizität ' ist '. Operationen können nicht auf Enden mit der Multiplizität '' angegeben werden. '

Könnt ihr mir helfen?

Vielen Dank für Ihre Hilfe und Ihre Zeit

2voto

Ronald Wildenberg Punkte 30961

Sie entfernen lediglich die AttendeeEvent aus der Sammlung von Teilnehmerereignissen für eine Attendee . Nehmen wir also an, Sie haben einen Teilnehmer A und Veranstaltung AV und Sie entfernen AV de A . Was soll in der Datenbank geschehen? Sie haben nicht wirklich entfernt AV . Sie haben nur gesagt, dass A sollte nicht mehr in Verbindung stehen mit AV . In Ihrer Datenbank wird also der Fremdschlüssel von AV a A auf NULL gesetzt ist, was in Ihrem Datenbankmodell nicht zulässig ist.

Die Lösung ist einfach: Ersetzen Sie die Zeile, in der Sie den Termin aus dem Teilnehmer entfernen, durch die folgende Zeile:

this.ObjectContext.AttendeeEvents.DeleteObject(av);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X