Maison > développement back-end > C++ > Comment mettre à jour ou insérer efficacement des lignes dans Entity Framework ?

Comment mettre à jour ou insérer efficacement des lignes dans Entity Framework ?

Patricia Arquette
Libérer: 2025-01-06 18:28:45
original
948 Les gens l'ont consulté

How to Efficiently Update or Insert Rows in Entity Framework?

Mettre à jour la ligne si elle existe, sinon insérer la logique avec Entity Framework

Lorsque vous travaillez avec Entity Framework, il existe des moyens efficaces d'implémenter la logique de mise à jour d'une ligne si elle existe ou insertion d'une nouvelle ligne.

Ci-joint Objets

S'il s'agit d'un objet attaché (un objet chargé à partir de l'instance de contexte actuelle), utilisez l'approche suivante :

if (context.ObjectStateManager.GetObjectStateEntry(myEntity).State == EntityState.Detached)
{
    context.MyEntities.AddObject(myEntity);
}

context.SaveChanges();
Copier après la connexion

L'objet suivra automatiquement les modifications et le L'appel SaveChanges() effectuera l'opération de mise à jour ou d'insertion selon les besoins.

Objets non attachés avec clé Vérifiez

Si la valeur clé de l'objet est disponible, vous pouvez utiliser ce code :

if (myEntity.Id != 0)
{
    context.MyEntities.Attach(myEntity);
    context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified);
}
else
{
    context.MyEntities.AddObject(myEntity);
}

context.SaveChanges();
Copier après la connexion

Cette approche vérifie d'abord si l'objet existe en utilisant sa propriété Id. Si c'est le cas, il l'attache au contexte et le marque comme modifié. Sinon, un nouvel objet est ajouté.

Objets non attachés sans vérification de clé

Lorsque l'existence de l'objet ne peut pas être déterminée par sa clé, utilisez une requête de recherche :

var id = myEntity.Id;
if (context.MyEntities.Any(e => e.Id == id))
{
    context.MyEntities.Attach(myEntity);
    context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified);
}
else
{
    context.MyEntities.AddObject(myEntity);
}

context.SaveChanges();
Copier après la connexion

Cette approche récupère la ligne correspondant à la clé de l'objet dans la base de données et effectue la pièce jointe ou l'ajout en fonction du résultat de la requête.

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