Compartir a través de


Administración del ciclo de vida del contexto de objetos (EntityDataSource)

Actualización: noviembre 2007

Si utiliza el control EntityDataSource, puede facilitar su propia instancia de la clase ObjectContext en el evento ContextCreating. El control utiliza esta instancia de ObjectContext en lugar de crear una nueva. También puede impedir que el control EntityDataSource elimine la clase ObjectContext del evento EntityDataSourceContextDisposingEventArgs.Esto resulta útil si se desea mantener una única instancia de ObjectContext en la página que la vaya a utilizar más de un control.

Tener acceso a ObjectContext

El objeto EntityDataSourceContextCreatingEventArgs tiene una propiedad Context que se puede asignar a una clase ObjectContext existente del controlador de eventos ContextCreating.

El modelo siguiente describe cómo utilizar una clase ObjectContext con más de una instancia del control EntityDataSource:

  1. Cree una instancia de ObjectContext en el evento Load de la página y asígnela a una variable de miembro de clase.

  2. Controle el evento EntityDataSourceContextCreatingEventArgs y asigne el miembro ObjectContext a la propiedad Context del objeto EntityDataSourceContextCreatingEventArgs.

  3. Controle el evento ContextDisposing y establezca la propiedad Cancel() de EntityDataSourceContextDisposingEventArgs en true. Esto evita la eliminación de ObjectContext.

  4. Repita los pasos 2 y 3 para cada EntityDataSource control de la página.

  5. Llame al método Dispose para eliminar la clase ObjectContext. El contexto también se elimina al descargar la página.

Para obtener más información sobre cómo administrar una clase ObjectContext de ejecución prolongada, vea Administrar recursos en servicios de objeto (Entity Framework).

El siguiente código muestra cómo crear una variable ObjectContext para el objeto Page y asignarla a la propiedad Context del objeto 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;
        }
    }

Para conservar este miembro objCtx para consultarlo en el futuro, cancele el evento ContextCreated como se muestra en el código siguiente.

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

Vea también

Conceptos

EntityDataSource (Eventos)

Ejemplo de tutorial rápido de EntityDataSource

Otros recursos

Selección de datos mediante EntityDataSource