Maison >développement back-end >C++ >Comment mettre à jour ou insérer efficacement des lignes dans 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!