Heim > Backend-Entwicklung > C++ > Wie kann ich verhindern, dass Entity Framework untergeordnete Objekte persistiert?

Wie kann ich verhindern, dass Entity Framework untergeordnete Objekte persistiert?

Mary-Kate Olsen
Freigeben: 2025-01-03 00:14:38
Original
962 Leute haben es durchsucht

How Can I Prevent Entity Framework from Persisting Child Objects?

Unterdrücken der Persistenz untergeordneter Objekte im Entity Framework

Im Entity Framework wird im Allgemeinen davon ausgegangen, dass beim Speichern einer Entität die untergeordneten Objekte automatisch als persistent gespeichert werden Also. In bestimmten Szenarien kann es jedoch wünschenswert sein, dieses Verhalten zu verhindern. Dies ist besonders nützlich, wenn es um vereinfachte Daten geht, die möglicherweise nicht direkt dem Datenbankschema entsprechen.

Betrachten wir ein hypothetisches Szenario, in dem eine School-Entität eine City-Eigenschaft enthält. Beim Füllen des School-Objekts aus einer Flatfile kann die City-Eigenschaft auf Nachschlagetabellen verweisen, um geografische Standorte zu bestimmen. Da diese Stadtdefinitionen jedoch bereits in der Datenbank vorhanden sind, ist es für Entity Framework nicht erforderlich, sie beim Speichern der Schule erneut einzufügen.

Um zu verhindern, dass Entity Framework in solchen Situationen untergeordnete Objekte persistiert, gibt es zwei Ansätze :

Ansatz 1: Verwendung von EntityState

Ein Ansatz besteht darin, den EntityState des untergeordneten Objekts manuell auf zu setzen Unverändert. Dadurch wird Entity Framework angewiesen, das untergeordnete Objekt während des Speichervorgangs zu ignorieren. Hier ist ein Beispiel:

using (var context = new DatabaseContext())
{
    context.Set<School>().Add(newItem);
    // Set the City property to Unchanged
    context.Entry(newItem.City).State = EntityState.Unchanged;
    context.SaveChanges();
}
Nach dem Login kopieren

Ansatz 2: Fremdschlüssel verwenden

Ein eleganterer und flexiblerer Ansatz besteht darin, die Fremdschlüsseleigenschaft in Ihrer Entitätsdefinition zu verwenden. Definieren Sie ein Fremdschlüsselattribut für die untergeordnete Eigenschaft, um deren Beziehung zur fremden Entität explizit anzugeben. Beispiel:

public class School
{
    [ForeignKey("City_Id")]
    public City City { get; set; }
    [Required]
    public int City_Id { get; set; }
}
Nach dem Login kopieren

Mit diesem Ansatz können Sie den Fremdschlüsselwert explizit während der Objekterstellung angeben und Entity Framework darüber informieren, dass das untergeordnete Objekt bereits beibehalten wurde. Die City-Eigenschaft kann aus dem Kontextdiagramm weggelassen werden, indem sie beim Speichern auf Null gesetzt wird:

newItem.City = null;
context.Set<School>().Add(newItem);
context.SaveChanges();
Nach dem Login kopieren

Durch die Verwendung eines dieser Ansätze können Sie verhindern, dass Entity Framework versucht, untergeordnete Objekte zu speichern, und so sicherstellen, dass nur die Die gewünschten Entitäten werden in der Datenbank gespeichert.

Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass Entity Framework untergeordnete Objekte persistiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage