Maison >développement back-end >C++ >Comment empêcher Entity Framework de sauvegarder des entités enfants lors de la sauvegarde d'une entité parent ?

Comment empêcher Entity Framework de sauvegarder des entités enfants lors de la sauvegarde d'une entité parent ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-02 13:20:39351parcourir

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

Comment empêcher Entity Framework d'enregistrer des objets enfants

Lors de l'utilisation d'Entity Framework, l'enregistrement d'une entité peut tenter par inadvertance d'enregistrer les entités enfants associées. Pour remédier à cela et conserver uniquement l'entité spécifiée, envisagez les approches suivantes :

Utilisation d'EntityState

Vous pouvez définir l'EntityState de l'objet enfant sur Unchanged, en informant Entity Framework pour le laisser intact :

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

Utiliser des Clés

Une approche plus flexible consiste à exploiter les clés étrangères. Lors de la définition d'entités, spécifiez la propriété de clé étrangère sur l'entité enfant et la propriété de clé primaire correspondante sur l'entité parent :

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; }
}

Lors de l'insertion de l'entité, définissez explicitement la propriété de clé étrangère de l'objet enfant et définissez la propriété de clé étrangère de l'objet parent. propriété de navigation sur 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();
        }
    }

En suivant ces techniques, vous pouvez contrôler la persistance des objets enfants, en garantissant que seules les entités souhaitées sont enregistrées et en empêchant leur intégrité potentielle. problèmes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn