Procédure : détacher des objets d'un contexte d'objet (Entity Framework)

Object Services vous permet de détacher des objets d'un contexte d'objet lorsqu'ils ne sont plus nécessaires. Pour ce faire, appelez la méthode Detach. Cela réduit la quantité de mémoire utilisée.

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. Pour plus d'informations, voir Détachement d'objets (Entity Framework).

L'exemple de cette rubrique est basé sur le modèle de vente Adventure Works Sales Model. Pour exécuter le code de cet exemple, vous devez déjà avoir ajouté le modèle de vente AdventureWorks Sales Model à votre projet et configuré ce dernier pour qu'il utilise Entity Framework. Pour ce faire, exécutez les procédures décrites dans Procédure : configurer manuellement un projet Entity Framework et Procédure : définir manuellement un modèle EDM (Entity Data Model) (Entity Framework).

Exemple

Cet exemple montre comment détacher les objets SalesOrderDetail et SalesOrderHeader d'un objet ObjectContext lorsqu'ils ne sont plus requis par l'application.

' This method is called to detach SalesOrderHeader objects and 
' related SalesOrderDetail objects from the supplied object
' context when no longer needed by the application. 
' Once detached, the resources can be garbage collected.
Private Shared Sub DetachOrders(ByVal context As ObjectContext, _
                          ByVal order As SalesOrderHeader)
    Try
        ' Detach each item from the collection.
        While order.SalesOrderDetail.Count > 0
            ' Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First())
        End While

        ' Detach the order.
        context.Detach(order)

    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Sub
// This method is called to detach SalesOrderHeader objects and 
// related SalesOrderDetail objects from the supplied object
// context when no longer needed by the application. 
// Once detached, the resources can be garbage collected.
private static void DetachOrders(ObjectContext context,
    SalesOrderHeader order)
{
    try
    {
        // Detach each item from the collection.
        while (order.SalesOrderDetail.Count > 0)
        {
            // Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First());
        }

        // Detach the order.
        context.Detach(order);
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Voir aussi

Concepts

Gestion des ressources dans Object Services (Entity Framework)

Autres ressources

Gestion du contexte de l'objet (Entity Framework)
Utilisation d'objets (Tâches Entity Framework)