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
Patricia Arquetteoriginal
2025-01-06 18:28:45940parcourir

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();

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();

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();

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!

Déclaration:
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