Wenn ich eine Entität mit einem Entitätsframework speichere, gehe ich natürlich davon aus, dass nur versucht wird, die angegebene Entität zu speichern. Es wird jedoch auch versucht, die untergeordneten Entitäten dieser Entität zu speichern. Dies verursacht alle möglichen Integritätsprobleme. Wie zwinge ich EF, nur die Entität zu speichern, die ich speichern möchte, und ignoriere daher alle untergeordneten Objekte?
Wenn ich die Eigenschaften manuell auf null setze, wird die Fehlermeldung "Der Vorgang ist fehlgeschlagen: Die Beziehung konnte nicht geändert werden, da eine oder mehrere der Fremdschlüsseleigenschaften nicht nullwertfähig sind." Dies ist äußerst kontraproduktiv, da ich das untergeordnete Objekt speziell auf null gesetzt habe, damit EF es in Ruhe lässt.
Warum möchte ich die untergeordneten Objekte nicht speichern / einfügen?
Da dies in den Kommentaren hin und her diskutiert wird, werde ich begründen, warum ich möchte, dass meine untergeordneten Objekte in Ruhe gelassen werden.
In der Anwendung, die ich erstelle, wird das EF-Objektmodell nicht aus der Datenbank geladen, sondern als Datenobjekt verwendet, das ich beim Parsen einer Einfachdatei auffülle. Bei den untergeordneten Objekten beziehen sich viele davon auf Nachschlagetabellen, die verschiedene Eigenschaften der übergeordneten Tabelle definieren. Zum Beispiel der geografische Standort der primären Entität.
Da ich diese Objekte selbst ausgefüllt habe, geht EF davon aus, dass es sich um neue Objekte handelt, die zusammen mit dem übergeordneten Objekt eingefügt werden müssen. Diese Definitionen sind jedoch bereits vorhanden und ich möchte keine Duplikate in der Datenbank erstellen. Ich verwende das EF-Objekt nur zum Nachschlagen und Auffüllen des Fremdschlüssels in meiner Haupttabellenentität.
Selbst bei den untergeordneten Objekten, bei denen es sich um echte Daten handelt, muss ich zuerst das übergeordnete Objekt speichern und einen Primärschlüssel erhalten, oder EF scheint nur ein Durcheinander zu verursachen. Hoffe das gibt eine Erklärung.