Partager via


Gestion du cycle de vie du contexte de l'objet (EntityDataSource)

Mise à jour : novembre 2007

Lorsque vous utilisez le contrôle EntityDataSource, vous pouvez fournir votre propre instance ObjectContext dans l'événement ContextCreating. Le contrôle utilise cette instance ObjectContext au lieu d'en créer une nouvelle. Vous pouvez également empêcher le contrôle EntityDataSource de supprimer le ObjectContext dans l'événement EntityDataSourceContextDisposingEventArgs.Cela s'avère utile lorsque vous souhaitez conserver une seule instance ObjectContext dans votre page qui doit être utilisée par plusieurs contrôles.

Accès à ObjectContext

L'objet EntityDataSourceContextCreatingEventArgs a une propriété Context qui peut être assignée à un ObjectContext existant dans le gestionnaire d'événements ContextCreating.

Le modèle suivant décrit comment utiliser un ObjectContext avec plusieurs instances du contrôle EntityDataSource :

  1. Instanciez ObjectContext dans l'événement Load de la page et assignez-le à une variable membre de classe.

  2. Gérez l'événement EntityDataSourceContextCreatingEventArgs et assignez le membre ObjectContext à la propriété Context de l'objet EntityDataSourceContextCreatingEventArgs.

  3. Gérez l'événement ContextDisposing et affectez true à la propriété Cancel() de EntityDataSourceContextDisposingEventArgs. Cela empêche la suppression de ObjectContext.

  4. Répétez les étapes 2 et 3 pour chaque contrôle EntityDataSource dans la page.

  5. Appelez la méthode Dispose pour supprimer ObjectContext. Le contexte est également supprimé lors du déchargement de la page.

Pour plus d'informations sur la gestion d'un ObjectContext à durée d'exécution longue, consultez Gestion des ressources dans Object Services (Entity Framework).

Le code suivant indique comment créer une variable ObjectContext pour l'objet Page et l'assigner à la propriété Context de l'objet EntityDataSourceContextCreatingEventArgs.

public partial class _Default : System.Web.UI.Page
    {
        AdventureWorksModel.AdventureWorksEntities objCtx =
            new AdventureWorksModel.AdventureWorksEntities();

        protected void EntityDataSource2_ContextCreating(object sender, 
            EntityDataSourceContextCreatingEventArgs e)
        {
            e.Context = objCtx;
        }
    }

Pour conserver ce objCtx membre à des fins de référence ultérieure, annulez l'événement ContextCreated, comme le montre le code suivant.

        protected void EntityDataSource2_ContextDisposing(object sender, 
            EntityDataSourceContextDisposingEventArgs e)
        {
            e.Cancel = true;
        }

Voir aussi

Concepts

Événements EntityDataSource

Démarrage rapide d'EntityDataSource, exemple

Autres ressources

Sélection de données à l'aide du contrôle EntityDataSource