Maison > développement back-end > C++ > Entity Framework 4 : Quand utiliser « AttachObject » ou « AddObject » ?

Entity Framework 4 : Quand utiliser « AttachObject » ou « AddObject » ?

Mary-Kate Olsen
Libérer: 2025-01-10 14:02:42
original
452 Les gens l'ont consulté

Entity Framework 4: When to Use `AttachObject` vs. `AddObject`?

Entity Framework 4 : Maîtriser AddObject et Attach

L'utilisation efficace d'Entity Framework dépend de la compréhension des rôles distincts de ObjectSet.AddObject et ObjectSet.Attach. Pendant que AddObject insère de nouvelles entités, Attach gère celles existantes. Toutefois, les situations nécessitant Attach peuvent être nuancées.

Un cas d'utilisation clé pour Attach implique des entités détachées du contexte. Cela se produit souvent après la récupération d’une entité et la fermeture ultérieure du contexte. Pour réengager cette entité pour modification, utilisez Attach :

var existingPerson = new Person { Name = "Joe Bloggs" };
ctx.Persons.Attach(existingPerson);
existingPerson.Name = "Joe Briggs";
ctx.SaveChanges();
Copier après la connexion

Cela génère une instruction UPDATE, évitant une récupération redondante de la base de données.

Une autre application précieuse de Attach consiste à connecter des entités existantes liées au contexte qui manquent de relations automatiques. Considérons une entité Person avec une propriété de navigation Addresses (une collection d'entités Address). Si vous avez chargé les objets Person et Address mais que leur relation n'est pas établie, Attach fournit la solution :

var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name == "Joe Bloggs");
var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID);
existingPerson.Addresses.Attach(myAddress);
ctx.SaveChanges();
Copier après la connexion

Ici, Attach met à jour la relation sans modifier les entités elles-mêmes.

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