Maison > développement back-end > C++ > Comment puis-je empêcher Entity Framework de persister des objets enfants ?

Comment puis-je empêcher Entity Framework de persister des objets enfants ?

Mary-Kate Olsen
Libérer: 2025-01-03 00:14:38
original
962 Les gens l'ont consulté

How Can I Prevent Entity Framework from Persisting Child Objects?

Suppression de la persistance des objets enfants dans Entity Framework

Dans Entity Framework, il est généralement supposé que l'enregistrement d'une entité conservera automatiquement ses objets enfants en tant que Bien. Toutefois, dans certains scénarios, il peut être souhaitable d’empêcher ce comportement. Ceci est particulièrement utile lorsqu'il s'agit de données aplaties qui peuvent ne pas correspondre directement au schéma de la base de données.

Considérons un scénario hypothétique dans lequel une entité School contient une propriété City. Lors du remplissage de l'objet School à partir d'un fichier plat, la propriété City peut faire référence à des tables de recherche pour déterminer les emplacements géographiques. Cependant, étant donné que ces définitions de villes existent déjà dans la base de données, il n'est pas nécessaire qu'Entity Framework les réinsère lors de la sauvegarde de l'école.

Pour empêcher Entity Framework de conserver des objets enfants dans de telles situations, il existe deux approches. :

Approche 1 : Utilisation d'EntityState

Une approche consiste à définir manuellement l'EntityState de l'enfant s'oppose à Inchangé. Cela demande à Entity Framework d'ignorer l'objet enfant lors de l'opération de sauvegarde. Voici un exemple :

using (var context = new DatabaseContext())
{
    context.Set<School>().Add(newItem);
    // Set the City property to Unchanged
    context.Entry(newItem.City).State = EntityState.Unchanged;
    context.SaveChanges();
}
Copier après la connexion

Approche 2 : Utilisation d'une clé étrangère

Une approche plus élégante et flexible consiste à utiliser la propriété Foreign Key dans la définition de votre entité. Définissez un attribut de clé étrangère sur la propriété enfant pour spécifier explicitement sa relation avec l'entité étrangère. Par exemple :

public class School
{
    [ForeignKey("City_Id")]
    public City City { get; set; }
    [Required]
    public int City_Id { get; set; }
}
Copier après la connexion

Cette approche vous permet de spécifier explicitement la valeur de la clé étrangère lors de la création de l'objet, informant Entity Framework que l'objet enfant a déjà été conservé. La propriété City peut être omise du graphique de contexte en la définissant sur null lors de l'enregistrement :

newItem.City = null;
context.Set<School>().Add(newItem);
context.SaveChanges();
Copier après la connexion

En employant l'une ou l'autre de ces approches, vous pouvez empêcher Entity Framework de tenter de sauvegarder les objets enfants, en garantissant que seul le les entités souhaitées sont conservées dans la base de données.

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