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