Maison > développement back-end > C++ > Comment implémenter la logique Upsert à l'aide d'Entity Framework ?

Comment implémenter la logique Upsert à l'aide d'Entity Framework ?

Barbara Streisand
Libérer: 2025-01-06 18:48:40
original
655 Les gens l'ont consulté

How to Implement Upsert Logic Using Entity Framework?

Mettre à jour ou insérer une logique avec Entity Framework

Entity Framework propose plusieurs approches pour gérer le scénario « Mettre à jour la ligne si elle existe, sinon insérer une nouvelle ligne ».

Objets attachés :

Si l'entité en cours de modification est déjà attachée au contexte, il peut être directement mis à jour :

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

// Attached object tracks modifications automatically

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

Objets non attachés avec clé connue :

Si l'entité possède une clé non nulle (indiquant une entrée existante) , il peut être attaché et modifié comme suit :

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

Objets non attachés avec Inconnu Clé :

Dans les cas où la clé est inconnue, une requête de recherche peut être effectuée pour déterminer son existence :

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

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