Maison >développement back-end >C++ >AddObject vs Attach dans Entity Framework 4 : quand utiliser chaque méthode ?
Gestion des objets Entity Framework 4 : Explication détaillée des méthodes ObjectContext.AddObject et Attach
Entity Framework 4 propose deux méthodes pour gérer les objets dans un contexte : ObjectContext.AddObject
et ObjectSet.AddObject
pour ajouter de nouveaux objets ; ObjectContext.Attach
et ObjectSet.Attach
pour indiquer les objets existants. Bien que leurs noms soient similaires, ils jouent des rôles très différents dans la gestion du cycle de vie des objets.
ObjectContext.AddObject et ObjectSet.AddObject : La naissance des objets
Utilisez ObjectContext.AddObject
et ObjectSet.AddObject
lorsque vous travaillez avec de nouvelles entités. Ces méthodes ajoutent des objets au contexte qui n'existent pas encore dans la base de données. L'entité nouvellement ajoutée obtiendra une EntityKey temporaire et un EntityState ajouté. Après avoir appelé SaveChanges
, le framework reconnaîtra ces objets comme des entités qui doivent être insérées dans la base de données.
ObjectContext.Attach et ObjectSet.Attach : connexion aux objets existants
Contrairement à AddObject
, ObjectContext.Attach
et ObjectSet.Attach
sont utilisés pour les objets qui existent déjà dans la base de données. Attach
Au lieu de définir EntityState sur Added, il le définit sur Unchanged, indiquant que l'objet reste inchangé depuis qu'il a été attaché au contexte. Les entités marquées de Attach
sont trouvées dans la base de données en faisant correspondre leurs valeurs EntityKey et sont mises à jour ou supprimées en conséquence lorsque SaveChanges
est appelé.
Un exemple d'application pratique de la méthode Attach
AddObject
est utilisé pour créer de nouvelles entités, tandis que Attach
est utile lorsque vous travaillez avec des objets existants. Par exemple, pour connecter une entité Personne existante à une entité Adresse existante dans le contexte :
<code class="language-csharp">var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name == "Joe Bloggs"); var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID); existingPerson.Addresses.Attach(myAddress); // 或: myAddress.PersonReference.Attach(existingPerson); ctx.SaveChanges();</code>L'opération
Attach
garantit que l'entité Adresse est reconnue comme une entité existante et connectée à l'entité Personne, permettant des opérations correctes de mise à jour ou de suppression de la base de données.
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!