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
Libérer: 2025-01-02 13:20:39
original
359 Les gens l'ont consulté

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();
}
Copier après la connexion

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; }
}
Copier après la connexion

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();
        }
    }
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal