Détachement d'objets (Entity Framework)

Entity Framework prend en charge des scénarios qui requièrent un contexte d'objet long. Par exemple, vous pouvez trouver ce scénario dans une application Windows où les objets de données sont liés à un contrôle visuel et où les objets doivent être rendus persistants pendant que les données sont affichées dans le contrôle. Lorsqu'une requête est exécutée dans un contexte d'objet, les objets retournés sont attachés automatiquement au contexte. Cela signifie que l'exécution de requêtes répétées dans le même contexte d'objet augmentera la mémoire requise du contexte d'objet. Une exception se produit lorsqu'une requête est exécutée avec une valeur MergeOption de NoTracking. Dans ce cas, les objets ne sont pas attachés au contexte d'objet.

Object Services vous permet de détacher des objets d'un contexte d'objet. Lorsque les objets ne sont plus requis, ils peuvent être détachés. Les objets détachés ne sont pas référencés par le contexte d'objet et leurs ressources peuvent être récupérées par le .NET Framework.

Pour détacher des objets, vous appelez la méthode Detach et passez une référence à l'objet qui est détaché, comme dans l'exemple suivant :

' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First())
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First());

Vous devez tenir compte des points suivants lors du détachement d'objets :

  • Detach affecte uniquement l'objet spécifique passé à la méthode. Si l'objet qui est détaché possède des objets connexes dans le contexte d'objet, ces objets ne sont pas détachés.

  • Les informations de relation ne sont pas conservées pour un objet détaché.

  • Les informations relatives à l'état de l'objet ne sont pas conservées lorsqu'un objet est détaché. Cela inclut les modifications suivies et les valeurs de clé temporaires.

  • Le détachement d'objets n'affecte pas les données contenues dans la source de données.

  • Les directives de suppression en cascade et les contraintes référentielles ne sont pas appliquées pendant une opération de détachement.

  • Les avantages du détachement d'objets doivent être considérés en tenant compte du traitement supplémentaire requis pour effectuer l'opération. Lorsque l'étendue des données utilisateur a changé, tel que l'affichage d'un nouveau formulaire avec un ensemble de données différent, vous devez envisager de créer une nouvelle instance ObjectContext, plutôt que de détacher simplement les objets d'un ObjectContext existant.

Pour plus d'informations, voir Procédure : détacher des objets d'un contexte d'objet (Entity Framework).

Voir aussi

Concepts

Attachement d'objets (Entity Framework)

Autres ressources

Gestion du contexte de l'objet (Entity Framework)