Entity Framework 5.0 Code zuerst mit vorhandener Datenbank. Reverse entwickelte die Klassen mit Elektrowerkzeugen. Alles funktioniert super. Die Datenbank hat zwei Tabellen. Ein Elternteil und ein Kind mit Fremdschlüssel zurück zur Eltern-ID. IDs sind alle int mit automatischem Inkrement. Ich habe mehrere übergeordnete Datensätze hinzugefügt und möchte jetzt untergeordnete Datensätze bestimmten übergeordneten Elementen hinzufügen. Der einzige Weg, den ich sehen kann, ist, die passende Eltern-ID zu finden, indem ich in der Eltern-Tabelle nach einem Namen oder einer anderen Eigenschaft suche und die ID zurückgebe. Verwenden Sie dann diese ID in der Fremdschlüsseleigenschaft, wenn Sie das Kind hinzufügen. Ich möchte keine neuen Eltern kastrieren. Ist dies die einzige Möglichkeit, ein Kind zu einem bestehenden Elternteil hinzuzufügen? Alle Beispiele im Internet scheinen ein Kind hinzuzufügen und ein neues Elternelement hinzuzufügen und kein Kind zu einem vorhandenen Elternelement hinzuzufügen. Jede Hilfe würde sehr geschätzt werden
"Julie" (Lerman) ist zufällig einer unserer Lehrer, wenn es um EF geht. Wie sie in ihrem Buch DbContext erklärt, können drei Eigenschaften in einer Eltern-Kind-Assoziation, zwei Navigationseigenschaften (parent.Children, child.Parent) und eine Fremdschlüsseleigenschaft (child.ParentId) vorkommen. Sie können eine dieser oder eine beliebige Kombination in Ihrem Code festlegen.
Wenn EF ausgelöst wird, um Änderungen zu erkennen (z. B. wenn SaveChanges
aufgerufen wird), wird ein Prozess namens relation fixup gestartet, der sicherstellt, dass die drei Eigenschaften synchronisiert sind.
Sie haben also drei Optionen, um einem übergeordneten Element eine untergeordnete Entität hinzuzufügen:
child.Parent = parentObject
, für die Sie nur die ID kennen müssen. Sie können die ID so erhalten, wie Sie es vorgeschlagen haben, aber genauso gut, denn Objekte, von denen Sie wissen, dass sie nicht gelöscht werden, können Sie in einer Variablen speichern lassen, um sie Transaktionen wiederzuverwenden. Bei den ersten beiden Optionen muss das untergeordnete Objekt nicht manuell zum Kontext hinzugefügt werden. EF weiß genug, um zu sehen, dass es neu ist. Mit der dritten Option muss es zu parentObject.Children.Add(child)
vor child.ParentId = parentId
hinzugefügt werden.
Tags und Links entity-framework parent-child