Maison > développement back-end > C++ > Comment puis-je empêcher Entity Framework de sauvegarder des objets enfants lors d'une opération de sauvegarde ?

Comment puis-je empêcher Entity Framework de sauvegarder des objets enfants lors d'une opération de sauvegarde ?

Mary-Kate Olsen
Libérer: 2025-01-04 18:03:41
original
904 Les gens l'ont consulté

How Can I Prevent Entity Framework from Saving Child Objects During a Save Operation?

Comprendre la gestion des objets enfants d'EF

Entity Framework (EF) tente par défaut d'enregistrer les entités enfants avec l'entité principale lors d'une sauvegarde ou opération d’insertion. Cependant, dans certains scénarios, ce comportement peut provoquer des problèmes.

Description du problème

Lors de la sauvegarde d'une entité, EF tente de sauvegarder également ses entités enfants. Toutefois, dans certains cas, les entités enfants peuvent déjà exister ou ne sont pas destinées à être insérées. Ce comportement entraîne des problèmes d'intégrité et peut être contre-productif.

Raison de l'exclusion de la sauvegarde

Il existe plusieurs raisons pour lesquelles un développeur peut souhaiter exclure les objets enfants de la sauvegarde. opération. Par exemple, les objets enfants peuvent représenter des valeurs de recherche qui existent déjà dans la base de données, et l'insertion de doublons ne serait pas souhaitable.

Remplacement de clé étrangère : une solution complète

Pour empêcher EF de sauvegarder les objets enfants, la solution préférée consiste à utiliser les propriétés de clé étrangère. En spécifiant une clé étrangère pour la relation, EF comprend que l'entité enfant est identifiée par une colonne distincte, et non par l'objet lui-même.

Pendant l'opération de sauvegarde, définissez explicitement l'objet enfant sur null et attribuez la clé étrangère appropriée. valeur clé. Cette approche indique clairement à EF que l'objet enfant ne doit pas être modifié lors de la sauvegarde.

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

    newItem.City = null; // Exclude child object from save
    newItem.City_Id = cityId; // Specify foreign key value

    using (var context = new DatabaseContext())
    {
        context.Set<School>().Add(newItem);
        context.SaveChanges();
        return newItem;
    }
}
Copier après la connexion

Avantages de l'approche par clé étrangère

L'approche par clé étrangère offre plusieurs avantages :

  • Clarté : Définit explicitement la relation et la clé étrangère mappage.
  • Flexibilité : Permet de contrôler l'existence de l'objet enfant sans définir les propriétés sur null.
  • Extensibilité : S'adapte facilement à des relations plus complexes, telles que autant à plusieurs, où les objets enfants sont explicitement gérés.

En adoptant l'approche de clé étrangère, les développeurs obtiennent un meilleur contrôle sur la gestion des objets enfants d'EF, ce qui leur permet d'effectuer les opérations de base de données souhaitées sans rencontrer de problèmes imprévus.

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