Maison >développement back-end >C++ >AddObject vs Attach dans Entity Framework 4 : quand utiliser chaque méthode ?

AddObject vs Attach dans Entity Framework 4 : quand utiliser chaque méthode ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-10 13:57:41737parcourir

AddObject vs. Attach in Entity Framework 4: When to Use Each Method?

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!

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