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 | |
---|---|---|
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. | |
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. | |
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. | |
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. | |
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. | |
DbContext(ObjectContext, Boolean) | Crea una nueva instancia de contexto en torno a un ObjectContext existente. | |
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 | |
---|---|---|
ChangeTracker | Proporciona acceso a las características del contexto que tratan el seguimiento de cambios de entidades. | |
Configuration | Proporciona acceso a las opciones de configuración para el contexto. | |
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 | |
---|---|---|
Dispose() | Llama al método Dispose 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. | |
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. | |
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. | |
Equals | Determina si el objeto DbContext especificado es igual al objeto DbContext actual. (Invalida a Object.Equals(Object)). | |
Finalize | (Se hereda de Object). | |
GetHashCode | Devuelve la función hash para este DbContext. (Invalida a Object.GetHashCode()). | |
GetType | Devuelve el tipo del DbContext actual. | |
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. | |
MemberwiseClone | (Se hereda de Object). | |
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. | |
SaveChanges | Guarda todos los cambios realizados en este contexto en la base de datos subyacente. | |
SaveChangesAsync() | Guarda de forma asincrónica todos los cambios realizados en este contexto en la base de datos subyacente. | |
SaveChangesAsync(CancellationToken) | Guarda de forma asincrónica todos los cambios realizados en este contexto en la base de datos subyacente. | |
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. | |
Set<TEntity>() | Devuelve una instancia de DbSet<TEntity> para obtener acceso a entidades del tipo especificado en el contexto y el almacenamiento subyacente. | |
ShouldValidateEntity | Punto de extensión que permite al usuario reemplazar el comportamiento predeterminado de validar solo entidades de tipo Added o Modified. | |
ToString | Devuelve una representación en forma de cadena del DbContext. (Invalida a Object.ToString()). | |
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 | |
---|---|---|
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.