Heim >Backend-Entwicklung >C++ >Wie kann verhindert werden, dass Entity Framework beim Speichern einer übergeordneten Entität untergeordnete Entitäten speichert?

Wie kann verhindert werden, dass Entity Framework beim Speichern einer übergeordneten Entität untergeordnete Entitäten speichert?

Susan Sarandon
Susan SarandonOriginal
2025-01-02 13:20:39351Durchsuche

How to Prevent Entity Framework from Saving Child Entities When Saving a Parent Entity?

So verhindern Sie, dass Entity Framework untergeordnete Objekte speichert

Bei Verwendung von Entity Framework kann beim Speichern einer Entität versehentlich versucht werden, zugehörige untergeordnete Objekte zu speichern. Um dies zu beheben und nur die angegebene Entität beizubehalten, ziehen Sie die folgenden Ansätze in Betracht:

Verwenden von EntityState

Sie können den EntityState des untergeordneten Objekts auf „Unverändert“ festlegen und Entity Framework informieren um es unangetastet zu lassen:

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

Utilizing Foreign Schlüssel

Ein flexiblerer Ansatz beinhaltet die Nutzung von Fremdschlüsseln. Geben Sie beim Definieren von Entitäten die Fremdschlüsseleigenschaft für die untergeordnete Entität und die entsprechende Primärschlüsseleigenschaft für die übergeordnete Entität an:

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

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

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

    [Required]
    public int City_Id { get; set; }
}

Legen Sie beim Einfügen der Entität explizit die Fremdschlüsseleigenschaft des untergeordneten Objekts und die des übergeordneten Objekts fest navigation property to null:

    public School Insert(School newItem, int cityId)
    {
        if (cityId <= 0)
        {
            throw new Exception("City ID not provided");
        }

        newItem.City = null;
        newItem.City_Id = cityId;

        using (var context = new DatabaseContext())
        {
            context.Set<School>().Add(newItem);
            context.SaveChanges();
        }
    }

Durch Befolgen dieser Techniken können Sie die Persistenz untergeordneter Objekte steuern und so sicherstellen, dass nur gewünschte Entitäten gespeichert werden, und potenzielle Integrität verhindern Probleme.

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass Entity Framework beim Speichern einer übergeordneten Entität untergeordnete Entitäten speichert?. 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