DbContextOptionsBuilder Clase

Definición

Proporciona una superficie de API simple para configurar DbContextOptions . Las bases de datos (y otras extensiones) definen normalmente métodos de extensión en este objeto que permiten configurar la conexión de base de datos (y otras opciones) que se van a usar para un contexto.

Puede usar DbContextOptionsBuilder para configurar un contexto invalidando OnConfiguring(DbContextOptionsBuilder) o creando DbContextOptions externamente y pasándolo al constructor de contexto.

public class DbContextOptionsBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IDbContextOptionsBuilderInfrastructure
type DbContextOptionsBuilder = class
    interface IDbContextOptionsBuilderInfrastructure
Public Class DbContextOptionsBuilder
Implements IDbContextOptionsBuilderInfrastructure
Herencia
DbContextOptionsBuilder
Derivado
Implementaciones

Constructores

DbContextOptionsBuilder()

Inicializa una nueva instancia de la DbContextOptionsBuilder clase sin ningún conjunto de opciones establecido.

DbContextOptionsBuilder(DbContextOptions)

Inicializa una nueva instancia de la DbContextOptionsBuilder clase para configurar más detalladamente un determinado DbContextOptions .

Propiedades

IsConfigured

Obtiene un valor que indica si se ha configurado alguna opción.

Esto puede ser útil cuando se ha invalidado OnConfiguring(DbContextOptionsBuilder) para configurar el contexto, pero en algunos casos también se proporcionan opciones externamente a través del constructor de contexto. Esta propiedad se puede utilizar para determinar si las opciones ya se han establecido y omitir parte o toda la lógica de OnConfiguring(DbContextOptionsBuilder) .

Options

Obtiene las opciones que se están configurando.

Métodos

AddInterceptors(IEnumerable<IInterceptor>)

Agrega IInterceptor instancias a las registradas en el contexto.

Los interceptores se pueden usar para ver, cambiar o suprimir las operaciones realizadas por Entity Framework. Vea las implementaciones específicas de IInterceptor para obtener más información. Por ejemplo, "IDbCommandInterceptor".

Una única instancia de interceptor puede implementar varias interfaces de interceptor diferentes. Se registrará como interceptor para todas las interfaces que implementa.

Las extensiones también pueden registrar varios IInterceptor en el proveedor de servicios interno. Si se encuentran los interceptores de aplicación y los insertados, los interceptores insertados se ejecutan en el orden en que se resuelven desde el proveedor de servicios y, a continuación, los interceptores de la aplicación se ejecutan en el orden en que se agregaron al contexto.

Llamar a este método varias veces dará como resultado que todos los interceptores de cada llamada se agreguen al contexto. Los interceptores agregados en una llamada anterior no reemplazan a los interceptores agregados en una llamada posterior.

AddInterceptors(IInterceptor[])

Agrega IInterceptor instancias a las registradas en el contexto.

Los interceptores se pueden usar para ver, cambiar o suprimir las operaciones realizadas por Entity Framework. Vea las implementaciones específicas de IInterceptor para obtener más información. Por ejemplo, "IDbCommandInterceptor".

Las extensiones también pueden registrar varios IInterceptor en el proveedor de servicios interno. Si se encuentran los interceptores de aplicación y los insertados, los interceptores insertados se ejecutan en el orden en que se resuelven desde el proveedor de servicios y, a continuación, los interceptores de la aplicación se ejecutan en el orden en que se agregaron al contexto.

Llamar a este método varias veces dará como resultado que todos los interceptores de cada llamada se agreguen al contexto. Los interceptores agregados en una llamada anterior no reemplazan a los interceptores agregados en una llamada posterior.

ConfigureWarnings(Action<WarningsConfigurationBuilder>)

Configura el comportamiento en tiempo de ejecución de las advertencias generadas por Entity Framework. Puede establecer un comportamiento y comportamientos predeterminados para cada tipo de advertencia.

Tenga en cuenta que el cambio de esta configuración puede hacer que EF cree un nuevo proveedor de servicios interno, lo que puede causar problemas de rendimiento. Por lo general, se espera que no se use más de una o dos configuraciones diferentes para una aplicación determinada.

Tenga en cuenta que si la aplicación está estableciendo el proveedor de servicios interno mediante una llamada a UseInternalServiceProvider(IServiceProvider) , esta opción debe configurar de la misma manera para todos los usos de ese proveedor de servicios. En su lugar, considere la posibilidad de no llamar a UseInternalServiceProvider(IServiceProvider) para que EF administre los proveedores de servicios y pueda crear nuevas instancias según sea necesario.

ConfigureWarnings(Action<WarningsConfigurationBuilder>)

Configura el comportamiento en tiempo de ejecución de las advertencias generadas por Entity Framework. Puede establecer un comportamiento y comportamientos predeterminados para cada tipo de advertencia.

EnableDetailedErrors(Boolean)

Habilita errores detallados al controlar las excepciones de valores de datos que se producen durante el procesamiento de los resultados de la consulta de almacén. Estos errores se producen con más frecuencia debido a la configuración de las propiedades de la entidad. Por ejemplo, Si una propiedad está configurada para ser de tipo ' int ', pero los datos subyacentes del almacén son realmente del tipo ' String ', se generará una excepción en tiempo de ejecución durante el procesamiento del valor de los datos. Cuando esta opción está habilitada y se encuentra un error de datos, la excepción generada incluirá detalles de la propiedad de entidad específica que generó el error.

Al habilitar esta opción, se produce una pequeña sobrecarga de rendimiento durante la ejecución de la consulta.

Tenga en cuenta que si la aplicación está estableciendo el proveedor de servicios interno mediante una llamada a UseInternalServiceProvider(IServiceProvider) , esta opción debe configurar de la misma manera para todos los usos de ese proveedor de servicios. En su lugar, considere la posibilidad de no llamar a UseInternalServiceProvider(IServiceProvider) para que EF administre los proveedores de servicios y pueda crear nuevas instancias según sea necesario.

EnableSensitiveDataLogging()

Permite que los datos de la aplicación se incluyan en mensajes de excepción, registro, etc. Esto puede incluir los valores asignados a las propiedades de las instancias de la entidad, los valores de parámetro para los comandos que se envían a la base de datos y otros datos de este tipo. Solo debe habilitar esta marca si tiene las medidas de seguridad adecuadas en su lugar en función de la confidencialidad de estos datos.

EnableSensitiveDataLogging(Boolean)

Permite que los datos de la aplicación se incluyan en mensajes de excepción, registro, etc. Esto puede incluir los valores asignados a las propiedades de las instancias de la entidad, los valores de parámetro para los comandos que se envían a la base de datos y otros datos de este tipo. Solo debe habilitar esta marca si tiene las medidas de seguridad adecuadas en su lugar en función de la confidencialidad de estos datos.

Tenga en cuenta que si la aplicación está estableciendo el proveedor de servicios interno mediante una llamada a UseInternalServiceProvider(IServiceProvider) , esta opción debe configurar de la misma manera para todos los usos de ese proveedor de servicios. En su lugar, considere la posibilidad de no llamar a UseInternalServiceProvider(IServiceProvider) para que EF administre los proveedores de servicios y pueda crear nuevas instancias según sea necesario.

EnableServiceProviderCaching(Boolean)

Habilita o deshabilita el almacenamiento en caché de los proveedores de servicios internos. Deshabilitar el almacenamiento en caché puede afectar enormemente al rendimiento y solo debe usarse en escenarios de prueba que compilan muchos proveedores de servicios para el aislamiento de pruebas.

Tenga en cuenta que si la aplicación está estableciendo el proveedor de servicios interno mediante una llamada a UseInternalServiceProvider(IServiceProvider) , el establecimiento de esta opción no tiene ningún efecto.

LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>)

Registra los eventos filtrados por un delegado de filtro personalizado proporcionado. El filtro debe devolver true para registrar un mensaje o false para filtrarlo fuera del registro.

Use la LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar todos los eventos de forma predeterminada. Use la LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar solo eventos en categorías específicas. Use la LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) sobrecarga para registrar un registrador completamente personalizado.

LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>)

Registra los eventos especificados mediante la acción proporcionada. Por ejemplo, use optionsBuilder. LogTo (Console. WriteLine, New [] {CoreEventId. ContextInitialized}) para registrar el ContextInitialized evento en la consola.

Use la LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar todos los eventos de forma predeterminada. Use la LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar solo los eventos de categorías específicas. Use la LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) sobrecarga para usar un filtro personalizado para los eventos. Use la LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) sobrecarga para registrar un registrador completamente personalizado.

LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>)

Registra todos los eventos de las categorías especificadas mediante la acción proporcionada. Por ejemplo, use optionsBuilder. LogTo (Console. WriteLine, New [] {DbLoggerCategory.Infrastructure.Name}) para registrar todos los eventos de la DbLoggerCategory.Infrastructure categoría.

Use la LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar todos los eventos de forma predeterminada. Use la LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar solo eventos concretos. Use la LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) sobrecarga para usar un filtro personalizado para los eventos. Use la LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) sobrecarga para registrar un registrador completamente personalizado.

LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>)

Registra el uso de la acción proporcionada. Por ejemplo, use optionsBuilder. LogTo (Console. WriteLine) para iniciar sesión en la consola.

Esta sobrecarga permite controlar el nivel mínimo de registro y el formato del registro. Utilice el LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar solo eventos concretos. Use la LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar solo los eventos de categorías específicas. Use la LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) sobrecarga para usar un filtro personalizado para los eventos. Use la LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) sobrecarga para registrar un registrador completamente personalizado.

LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>)

Registra los eventos en un delegado de registrador personalizado filtrado por un delegado de filtro personalizado. El filtro debe devolver true para registrar un mensaje o false para filtrarlo fuera del registro.

Use la LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar todos los eventos de forma predeterminada. Use la LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) sobrecarga para registrar solo eventos en categorías específicas. Use la LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) sobrecarga para usar un filtro personalizado para los eventos.

ReplaceService<TService,TCurrentImplementation,TNewImplementation>()

Reemplaza la implementación de Entity Framework interna de una implementación específica de un contrato de servicio con una implementación diferente.

Este método es útil para reemplazar una única instancia de servicios que se puede registrar legítimamente varias veces en el proveedor de servicios internos de EF.

Este método solo se puede usar cuando EF está compilando y administrando su proveedor de servicios interno. Si el proveedor de servicios se compila externamente y se pasa a UseInternalServiceProvider(IServiceProvider) , se deben configurar los servicios de reemplazo en ese proveedor de servicios antes de que se pasen a EF.

El servicio de reemplazo obtiene el mismo ámbito que el servicio EF que está reemplazando.

ReplaceService<TService,TImplementation>()

Reemplaza todas las implementaciones de Entity Framework internas de un contrato de servicio con una implementación diferente.

Este método solo se puede usar cuando EF está compilando y administrando su proveedor de servicios interno. Si el proveedor de servicios se compila externamente y se pasa a UseInternalServiceProvider(IServiceProvider) , se deben configurar los servicios de reemplazo en ese proveedor de servicios antes de que se pasen a EF.

El servicio de reemplazo obtiene el mismo ámbito que el servicio EF que está reemplazando.

UseApplicationServiceProvider(IServiceProvider)

Establece el IServiceProvider desde el que se obtendrán los servicios de aplicación. Esto se hace automáticamente al usar ' AddDbContext ' o ' AddDbContextPool ', por lo que es poco frecuente que se deba llamar a este método.

UseInternalServiceProvider(IServiceProvider)

Establece el IServiceProvider que el contexto debe resolver todos sus servicios de. EF creará y administrará un proveedor de servicios si no se especifica ninguno.

El proveedor de servicios debe contener todos los servicios requeridos por Entity Framework (y la base de datos que se está usando). Los servicios de Entity Framework se pueden registrar mediante un método de extensión en IServiceCollection . Por ejemplo, el proveedor de Microsoft SQL Server incluye un método AddEntityFrameworkSqlServer () para agregar los servicios necesarios.

Si IServiceProvider tiene un DbContextOptions o DbContextOptions<TContext> registrado, se usará como las opciones para esta instancia de contexto.

UseLoggerFactory(ILoggerFactory)

Establece el ILoggerFactory que se utilizará para crear ILogger instancias para el registro realizado por este contexto.

No es necesario llamar a este método cuando se usa uno de los métodos ' AddDbContext ', incluido ' AddDbContextPool '. Estos métodos garantizan que el ILoggerFactory utilizado por EF se obtiene del proveedor de servicios de aplicación.

Este método no se puede usar si la aplicación está estableciendo el proveedor de servicios interno mediante una llamada a UseInternalServiceProvider(IServiceProvider) . En este caso, ILoggerFactory debe configurarse directamente en ese proveedor de servicios.

UseMemoryCache(IMemoryCache)

Establece el IMemoryCache que se va a usar para el almacenamiento en caché de consultas por este contexto.

Tenga en cuenta que el cambio de la memoria caché puede hacer que EF compile un nuevo proveedor de servicios interno, lo que puede causar problemas de rendimiento. Por lo general, se espera que no se use más de una o dos instancias diferentes para una aplicación determinada.

Este método no se puede usar si la aplicación está estableciendo el proveedor de servicios interno mediante una llamada a UseInternalServiceProvider(IServiceProvider) . En este caso, IMemoryCache debe configurarse directamente en ese proveedor de servicios.

UseModel(IModel)

Establece el modelo que se va a usar para el contexto. Si el modelo está establecido, OnModelCreating(ModelBuilder) no se ejecutará.

Si FinalizeModel() se debe llamar primero a un modelo creado externamente.

UseQueryTrackingBehavior(QueryTrackingBehavior)

Establece el comportamiento de seguimiento para las consultas LINQ que se ejecutan en el contexto. Deshabilitar el seguimiento de cambios es útil en escenarios de solo lectura porque evita la sobrecarga de configurar el seguimiento de cambios para cada instancia de entidad. No debe deshabilitar el seguimiento de cambios si desea manipular instancias de entidad y conservar esos cambios en la base de datos mediante SaveChanges() .

Este método establece el comportamiento predeterminado para todos los contextos creados con estas opciones, pero puede invalidar este comportamiento para una instancia de contexto mediante QueryTrackingBehavior o en consultas individuales mediante los AsNoTracking<TEntity>(IQueryable<TEntity>) AsTracking<TEntity>(IQueryable<TEntity>) métodos y.

El valor predeterminado es TrackAll. Esto significa que el seguimiento de cambios realizará un seguimiento de los cambios de todas las entidades que se devuelven desde una consulta LINQ.

Implementaciones de interfaz explícitas

IDbContextOptionsBuilderInfrastructure.AddOrUpdateExtension<TExtension>(TExtension)

Agrega la extensión especificada a las opciones. Si ya existe una extensión existente del mismo tipo, se reemplazará.

Este método está pensado para que lo usen los métodos de extensión para configurar el contexto. No está diseñado para usarse en el código de la aplicación.

Métodos de extensión

UseCosmos(DbContextOptionsBuilder, String, String, Action<CosmosDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de Azure cosmos.

UseCosmos(DbContextOptionsBuilder, String, String, String, Action<CosmosDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de Azure cosmos.

UseInMemoryDatabase(DbContextOptionsBuilder, Action<InMemoryDbContextOptionsBuilder>)
Obsoleto.
Obsoleto.

Configura el contexto para que se conecte a la base de datos en memoria compartida heredada. Este método está obsoleto. Utilice UseInMemoryDatabase(DbContextOptionsBuilder, String, Action<InMemoryDbContextOptionsBuilder>) en su lugar.

UseInMemoryDatabase(DbContextOptionsBuilder, String, InMemoryDatabaseRoot, Action<InMemoryDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos en memoria con nombre. La base de datos en memoria se comparte en cualquier lugar en el que se use el mismo nombre, pero solo para un proveedor de servicios determinado.

UseInMemoryDatabase(DbContextOptionsBuilder, String, Action<InMemoryDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos en memoria con nombre. La base de datos en memoria se comparte en cualquier lugar en el que se use el mismo nombre, pero solo para un proveedor de servicios determinado. Para usar la misma base de datos en memoria entre proveedores de servicios, llame a UseInMemoryDatabase(DbContextOptionsBuilder, String, InMemoryDatabaseRoot, Action<InMemoryDbContextOptionsBuilder>) pasar un compartido InMemoryDatabaseRoot en el que se va a raíz la base de datos.

UseChangeTrackingProxies(DbContextOptionsBuilder, Boolean, Boolean)

Activa la creación de servidores proxy de seguimiento de cambios.

Tenga en cuenta que esto requiere que los servicios apropiados estén disponibles en el proveedor de servicios internos de EF. Normalmente, esto se realizará automáticamente, pero si la aplicación controla el proveedor de servicios, AddEntityFrameworkProxies(IServiceCollection) es posible que se necesite una llamada a.

UseLazyLoadingProxies(DbContextOptionsBuilder, Boolean)

Activa la creación de servidores proxy de carga diferida.

Tenga en cuenta que esto requiere que los servicios apropiados estén disponibles en el proveedor de servicios internos de EF. Normalmente, esto se realizará automáticamente, pero si la aplicación controla el proveedor de servicios, AddEntityFrameworkProxies(IServiceCollection) es posible que se necesite una llamada a.

UseSqlite(DbContextOptionsBuilder, Action<SqliteDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de SQLite, pero sin establecer inicialmente ninguna DbConnection cadena de conexión de o.

La conexión o cadena de conexión debe establecerse antes de DbContext que se utilice para conectarse a una base de datos. Establezca una conexión mediante SetDbConnection(DatabaseFacade, DbConnection) . Establezca una cadena de conexión mediante SetConnectionString(DatabaseFacade, String) .

UseSqlite(DbContextOptionsBuilder, DbConnection, Action<SqliteDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de SQLite.

UseSqlite(DbContextOptionsBuilder, String, Action<SqliteDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de SQLite.

UseSqlServer(DbContextOptionsBuilder, Action<SqlServerDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de Microsoft SQL Server, pero sin establecer inicialmente ninguna DbConnection cadena de conexión de o.

La conexión o cadena de conexión debe establecerse antes de DbContext que se utilice para conectarse a una base de datos. Establezca una conexión mediante SetDbConnection(DatabaseFacade, DbConnection) . Establezca una cadena de conexión mediante SetConnectionString(DatabaseFacade, String) .

UseSqlServer(DbContextOptionsBuilder, DbConnection, Action<SqlServerDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de Microsoft SQL Server.

UseSqlServer(DbContextOptionsBuilder, String, Action<SqlServerDbContextOptionsBuilder>)

Configura el contexto para conectarse a una base de datos de Microsoft SQL Server.

Se aplica a