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

Wie kann ich verhindern, dass Entity Framework untergeordnete Objekte einfügt?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 09:13:40493Durchsuche

How Can I Prevent Entity Framework from Inserting Child Objects?

Verhindern des Einfügens von untergeordneten Objekten im Entity Framework

Entity Framework versucht häufig, verwandte untergeordnete Objekte zusammen mit der angegebenen Entität zu speichern, was zu Integrität führen kann Probleme. Um dies zu umgehen und das Einfügen von untergeordneten Objekten zu verhindern, können mehrere Ansätze verwendet werden.

Nullfähige Fremdschlüsseleigenschaften

Standardmäßig geht Entity Framework davon aus, dass Fremdschlüssel nicht nullbar sind . Damit untergeordnete Objekte auf Null gesetzt werden können, müssen die Fremdschlüsseleigenschaften explizit als nullfähig markiert werden. Dies kann erreicht werden, indem das erforderliche Attribut in der Modellklasse auf „false“ gesetzt wird.

Beispiel:

public class School
{
  public int Id { get; set; }
  public string Name { get; set; }

  public int? CityId { get; set; }
  public City City { get; set; }
}

public class City
{
  public int Id { get; set; }
  public string Name { get; set; }
}

Das Setzen von Fremdschlüsseleigenschaften auf null kann jedoch zu Folgendem führen: Validierungsfehler.

Entity Entry State Management

Ein alternativer Ansatz ist die manuelle Einstellung der Status des untergeordneten Objekts im Entity Framework-Kontext. Dadurch wird der Kontext darüber informiert, dass das untergeordnete Objekt bereits vorhanden ist und nicht gespeichert werden sollte.

Beispiel:

public School Insert(School newItem)
{
    using (var context = new DatabaseContext())
    {
        context.Set<School>().Add(newItem);
        context.Entry(newItem.City).State = EntityState.Unchanged;
        context.SaveChanges();
        return newItem;
    }
}

Fremdschlüsselansatz

Eine robustere Methode besteht darin, den Fremdschlüssel explizit in der Modellklasse zu definieren. Durch die Angabe des Namens der Fremdschlüsselspalte in Attributen erkennt Entity Framework die Beziehung und fügt nur das übergeordnete Objekt ein.

Beispiel:

public class School
{
  public int Id { get; set; }
  public string Name { get; set; }

  [ForeignKey("City_Id")]
  public int City_Id { get; set; }
  public City City { get; set; }
}

public class City
{
  public int Id { get; set; }
  public string Name { get; set; }
}

Fazit

Die Verwendung von Nullable-Fremdschlüsseleigenschaften, die Verwaltung von Entitätseintragszuständen oder die explizite Definition von Fremdschlüsseln bietet Möglichkeiten, Entity Framework daran zu hindern Einfügen von untergeordneten Objekten. Der geeignete Ansatz hängt von den spezifischen Anforderungen und dem Modelldesign ab.

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

Stellungnahme:
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