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
Mary-Kate Olsenoriginal
2025-01-10 14:02:42382parcourir

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 :

<code class="language-csharp">var existingPerson = new Person { Name = "Joe Bloggs" };
ctx.Persons.Attach(existingPerson);
existingPerson.Name = "Joe Briggs";
ctx.SaveChanges();</code>

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 :

<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);
ctx.SaveChanges();</code>

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:
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