Grundlegendes zum Umgang mit untergeordneten Objekten von EF
Entity Framework (EF) versucht standardmäßig, untergeordnete Entitäten zusammen mit der Hauptentität während eines Speichervorgangs oder zu speichern Einfügevorgang. In bestimmten Szenarien kann dieses Verhalten jedoch Probleme verursachen.
Problembeschreibung
Beim Speichern einer Entität versucht EF, auch seine untergeordneten Entitäten zu speichern. In einigen Fällen sind die untergeordneten Entitäten jedoch möglicherweise bereits vorhanden oder nicht zum Einfügen vorgesehen. Dieses Verhalten führt zu Integritätsproblemen und kann kontraproduktiv sein.
Grund für den Ausschluss vom Speichern
Es gibt verschiedene Gründe, warum ein Entwickler untergeordnete Objekte vom Speichern ausschließen möchte Betrieb. Beispielsweise können die untergeordneten Objekte Suchwerte darstellen, die bereits in der Datenbank vorhanden sind, und das Einfügen von Duplikaten wäre unerwünscht.
Fremdschlüsselüberschreibung: Eine umfassende Lösung
Zu Um zu verhindern, dass EF untergeordnete Objekte speichert, besteht die bevorzugte Lösung darin, Fremdschlüsseleigenschaften zu verwenden. Durch die Angabe eines Fremdschlüssels für die Beziehung geht EF davon aus, dass die untergeordnete Entität durch eine separate Spalte und nicht durch das Objekt selbst identifiziert wird.
Setzen Sie das untergeordnete Objekt während des Speichervorgangs explizit auf Null und weisen Sie den entsprechenden Fremdschlüssel zu Schlüsselwert. Dieser Ansatz zeigt EF deutlich an, dass das untergeordnete Objekt während des Speicherns nicht geändert werden sollte.
public School Insert(School newItem, int cityId) { if (cityId <= 0) { throw new Exception("City ID not provided"); } newItem.City = null; // Exclude child object from save newItem.City_Id = cityId; // Specify foreign key value using (var context = new DatabaseContext()) { context.Set<School>().Add(newItem); context.SaveChanges(); return newItem; } }
Vorteile des Fremdschlüsselansatzes
Der Fremdschlüsselansatz bietet mehrere Vorteile:
Durch die Übernahme des Fremdschlüsselansatzes, Entwickler erhalten eine bessere Kontrolle über die Handhabung untergeordneter Objekte von EF und können so gewünschte Datenbankvorgänge ausführen, ohne auf unvorhergesehene Probleme zu stoßen.
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass Entity Framework untergeordnete Objekte während eines Speichervorgangs speichert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!