DbContext (Clase)

[Esta página es específica de la versión 6 de Entity Framework. La versión más reciente está disponible como el paquete NuGet de Entity Framework. Para más información sobre Entity Framework, consulte msdn.com/es-ES/data/ef].

Una instancia de DbContext representa una combinación de los modelos de unidad de trabajo y repositorio, de modo que pueda emplearse para consultar una base de datos y agrupar los cambios que, seguidamente, se volverán a escribir en el almacenamiento como una unidad. DbContext es conceptualmente similar a ObjectContext.

Jerarquía de herencia

System.Object
  System.Data.Entity.DbContext
    System.Data.Entity.Infrastructure.TransactionContext
    System.Data.Entity.Migrations.History.HistoryContext

Espacio de nombres:  System.Data.Entity
Ensamblado:  EntityFramework (en EntityFramework.dll)

Sintaxis

'Declaración
Public Class DbContext _
    Implements IDisposable, IObjectContextAdapter
'Uso
Dim instance As DbContext
public class DbContext : IDisposable, IObjectContextAdapter
public ref class DbContext : IDisposable, 
    IObjectContextAdapter
type DbContext =  
    class 
        interface IDisposable 
        interface IObjectContextAdapter 
    end
public class DbContext implements IDisposable, IObjectContextAdapter

El tipo DbContext expone los siguientes miembros.

Constructores

  Name Descripción
Método protegido DbContext() Crea una nueva instancia de contexto usando convenciones para crear el nombre de la base de datos con la que se realizará una conexión.El nombre por convención es el nombre completo (espacio de nombres + nombre de clase) de la clase de contexto derivado.Vea los comentarios de la clase para saber cómo se usa para crear una conexión.
Método público DbContext(String) Crea una nueva instancia de contexto utilizando la cadena dada como nombre o cadena de conexión para la base de datos con la que se realizará una conexión.Vea los comentarios de la clase para saber cómo se usa para crear una conexión.
Método protegido DbContext(DbCompiledModel) Crea una nueva instancia de contexto utilizando convenciones para crear el nombre de la base de datos con la que se realizará una conexión y la inicializa a partir del modelo determinado.El nombre por convención es el nombre completo (espacio de nombres + nombre de clase) de la clase de contexto derivado.Vea los comentarios de la clase para saber cómo se usa para crear una conexión.
Método público DbContext(DbConnection, Boolean) Crea una nueva instancia de contexto utilizando la conexión existente para conectar con una base de datos.La conexión no se desechará cuando se deseche el contexto si contextOwnsConnection es false.
Método público DbContext(String, DbCompiledModel) Crea una nueva instancia de contexto utilizando la cadena dada como nombre o cadena de conexión para la base de datos con la que se realizará una conexión y la inicializa a partir del modelo determinado.Vea los comentarios de la clase para saber cómo se usa para crear una conexión.
Método público DbContext(ObjectContext, Boolean) Crea una nueva instancia de contexto en torno a un ObjectContext existente.
Método público DbContext(DbConnection, DbCompiledModel, Boolean) Crea una nueva instancia de contexto utilizando la conexión existente para conectar con una base de datos y la inicializa a partir del modelo determinado.La conexión no se desechará cuando se deseche el contexto si contextOwnsConnection es false.

Superior

Propiedades

  Name Descripción
Propiedad pública ChangeTracker Proporciona acceso a las características del contexto que tratan el seguimiento de cambios de entidades.
Propiedad pública Configuration Proporciona acceso a las opciones de configuración para el contexto.
Propiedad pública Database Crea una instancia de base de datos para este contexto, que permite realizar comprobaciones de creación, eliminación y existencia para la base de datos subyacente.

Superior

Métodos

  Name Descripción
Método público Dispose() Llama al método Dispose protegido.
Método protegido Dispose(Boolean) Elimina el contexto.El objeto ObjectContext subyacente también se elimina si fue creado por este contexto. o bien si la propiedad se pasó a este contexto cuando se creó el citado contexto.La conexión con la base de datos (objeto DbConnection) también se desecha si la creó este contexto o si su propiedad se pasó a este contexto cuando se creó el citado contexto.
Método público Entry(Object) Obtiene un objeto DbEntityEntry para la entidad determinada que proporciona acceso a información sobre la entidad y la capacidad de realizar las acciones en la entidad.
Método público Entry<TEntity>(TEntity) Obtiene un objeto DbEntityEntry<TEntity> para la entidad determinada que proporciona acceso a información sobre la entidad y la capacidad de realizar las acciones en la entidad.
Método público Equals Determina si el objeto DbContext especificado es igual al objeto DbContext actual. (Invalida a Object.Equals(Object)).
Método protegido Finalize (Se hereda de Object).
Método público GetHashCode Devuelve la función hash para este DbContext. (Invalida a Object.GetHashCode()).
Método público GetType Devuelve el tipo del DbContext actual.
Método público GetValidationErrors Valida las entidades de las que se realiza un seguimiento y devuelve una colección de DbEntityValidationResult que contiene los resultados de la validación.
Método protegido MemberwiseClone (Se hereda de Object).
Método protegido OnModelCreating Se llama a este método cuando el modelo para un contexto derivado se ha inicializado, pero antes de que el modelo se haya bloqueado y utilizado para inicializar el contexto.La implementación predeterminada de este método no hace nada, pero se puede reemplazar en una clase derivada de modo que el modelo se pueda configurar más antes de bloquearse.
Método público SaveChanges Guarda todos los cambios realizados en este contexto en la base de datos subyacente.
Método público SaveChangesAsync() Guarda de forma asincrónica todos los cambios realizados en este contexto en la base de datos subyacente.
Método público SaveChangesAsync(CancellationToken) Guarda de forma asincrónica todos los cambios realizados en este contexto en la base de datos subyacente.
Método público Set(Type) Devuelve una instancia de DbSet no genérico para obtener acceso a entidades del tipo especificado en el contexto y el almacenamiento subyacentes.
Método público Set<TEntity>() Devuelve una instancia de DbSet<TEntity> para obtener acceso a entidades del tipo especificado en el contexto y el almacenamiento subyacente.
Método protegido ShouldValidateEntity Punto de extensión que permite al usuario reemplazar el comportamiento predeterminado de validar solo entidades de tipo Added o Modified.
Método público ToString Devuelve una representación en forma de cadena del DbContext. (Invalida a Object.ToString()).
Método protegido ValidateEntity Punto de extensión que permite al usuario personalizar la validación de una entidad o filtrar los resultados de la validación.Lo llama el método GetValidationErrors().

Superior

Implementaciones de interfaz explícita

  Name Descripción
Implementación explícita de interfacesPropiedad privada IObjectContextAdapter.ObjectContext Devuelve el ObjectContext de Entity Framework que subyace a este contexto.

Superior

Comentarios

DbContext se usa normalmente con un tipo derivado que contiene propiedades de DbSet<TEntity> para las entidades raíz del modelo. Estos conjuntos se inicializan automáticamente cuando se crea la instancia de la clase derivada. Este comportamiento se puede modificar si se aplica el atributo SuppressDbSetInitializationAttribute a toda la clase de contexto derivado o a propiedades individuales de la clase. Entity Data Model que respalda el contexto puede especificarse de varias maneras. Cuando se usa el enfoque Code First, las propiedades de DbSet<TEntity> en el contexto derivado se emplean para crear un modelo por convención. El método protegido OnModelCreating se puede reemplazar para retocar este modelo. Se puede obtener más control sobre el modelo usado para el enfoque Model First creando explícitamente un DbCompiledModel a partir de un DbModelBuilder y pasando este modelo a uno de los constructores de DbContext. Cuando se usa el enfoque Database First o Model First, se puede crear el Entity Data Model con el Entity Designer (o manualmente creando un archivo EDMX) y, después, este modelo se puede especificar mediante una cadena de conexión de entidad o un objeto EntityConnection. La conexión a la base de datos (incluido el nombre de la base de datos) se puede especificar de varias maneras. Si se llama al constructor DbContext sin parámetros desde un contexto derivado, se usa el nombre del contexto derivado para buscar una cadena de conexión en el archivo app.config o web.config. Si no se encuentra ninguna cadena de conexión, el nombre se pasa al DefaultConnectionFactory registrado en la clase Database. El generador de conexión usa el nombre del contexto como nombre de la base de datos en una cadena de conexión predeterminada. (Puntos de esta cadena de conexión predeterminada a . \SQLEXPRESS de la máquina local, a menos que se haya registrado un DefaultConnectionFactory diferente.) En lugar de usar el nombre del contexto derivado, también se puede especificar explícitamente el nombre de la conexión o de la base de datos si se pasa el nombre a uno de los constructores de DbContext que toma una cadena. También se puede pasar el nombre con el formato "name=myname", en cuyo caso el nombre debe encontrarse en el archivo de configuración; de lo contrario, se producirá una excepción. Tenga en cuenta que la conexión encontrada en el archivo app.config o web.config puede ser una cadena de conexión de base de datos normal (no una cadena de conexión especial de Entity Framework), en cuyo caso DbContext usará Code First. Sin embargo, si la conexión encontrada en el archivo de configuración es una cadena de conexión especial de Entity Framework, DbContext usará Database/Model First y se empleará el modelo especificado en la cadena de conexión. También se puede usar un objeto DbConnection existente o creado explícitamente en lugar del nombre de la base de datos/conexión. Se puede aplicar un atributo DbModelBuilderVersionAttribute a una clase derivada de DbContext para establecer la versión de convenciones usada por el contexto cuando crea un modelo. Si no se aplica ningún atributo, se usará la versión más reciente de convenciones.

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Vea también

Referencia

System.Data.Entity (Espacio de nombres)