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
Libérer: 2025-01-10 13:57:41
original
744 Les gens l'ont consulté

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 :

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();
Copier après la connexion
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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal