DbContextOptionsBuilder Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет простую область API для настройки DbContextOptions. Базы данных (и другие расширения) обычно определяют методы расширения для этого объекта, которые позволяют настроить подключение к базе данных (и другие параметры), которые будут использоваться для контекста.
Для настройки контекста можно DbContextOptionsBuilder переопределить OnConfiguring(DbContextOptionsBuilder) или создать внешний DbContextOptions объект и передать его конструктору контекста.
public class DbContextOptionsBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IDbContextOptionsBuilderInfrastructure
type DbContextOptionsBuilder = class
interface IDbContextOptionsBuilderInfrastructure
Public Class DbContextOptionsBuilder
Implements IDbContextOptionsBuilderInfrastructure
- Наследование
-
DbContextOptionsBuilder
- Производный
- Реализации
Комментарии
Дополнительные сведения см . в разделе "Использование DbContextOptions ".
Конструкторы
| DbContextOptionsBuilder() |
Инициализирует новый экземпляр DbContextOptionsBuilder класса без набора параметров. |
| DbContextOptionsBuilder(DbContextOptions) |
Инициализирует новый экземпляр DbContextOptionsBuilder класса для дальнейшей настройки заданного DbContextOptions. |
Свойства
| IsConfigured |
Возвращает значение, указывающее, настроены ли какие-либо параметры. Это может быть полезно при переопределении OnConfiguring(DbContextOptionsBuilder) для настройки контекста, но в некоторых случаях вы также предоставляете параметры через конструктор контекста. Это свойство можно использовать для определения того, заданы ли параметры, и пропустить некоторые или все логики.OnConfiguring(DbContextOptionsBuilder) |
| Options |
Возвращает параметры, которые настраиваются. |
Методы
| AddInterceptors(IEnumerable<IInterceptor>) |
Добавляет IInterceptor экземпляры в зарегистрированные в контексте. Перехватчики можно использовать для просмотра, изменения или подавления операций, выполняемых Entity Framework. Дополнительные сведения см. в конкретных реализациях IInterceptor . Например, "IDbCommandInterceptor". Один экземпляр перехватчика может реализовать несколько различных интерфейсов перехватчика. Он будет зарегистрирован как перехватчик для всех интерфейсов, которые он реализует. Расширения также могут регистрировать несколько IInterceptors во внутреннем поставщике услуг. Если обнаружены и внедренные, и перехватчики приложений, то внедренные перехватчики выполняются в том порядке, в который они разрешаются от поставщика услуг, а затем перехватчики приложений выполняются в том порядке, в который они были добавлены в контекст. Вызов этого метода несколько раз приведет к тому, что все перехватчики в каждом вызове добавляются в контекст. Перехватчики, добавленные в предыдущем вызове, не переопределяются перехватчиками, добавленными в последующий вызов. |
| AddInterceptors(IInterceptor[]) |
Добавляет IInterceptor экземпляры в зарегистрированные в контексте. Перехватчики можно использовать для просмотра, изменения или подавления операций, выполняемых Entity Framework. Дополнительные сведения см. в конкретных реализациях IInterceptor . Например, "IDbCommandInterceptor". Расширения также могут регистрировать несколько IInterceptors во внутреннем поставщике услуг. Если обнаружены и внедренные, и перехватчики приложений, то внедренные перехватчики выполняются в том порядке, в который они разрешаются от поставщика услуг, а затем перехватчики приложений выполняются в том порядке, в который они были добавлены в контекст. Вызов этого метода несколько раз приведет к тому, что все перехватчики в каждом вызове добавляются в контекст. Перехватчики, добавленные в предыдущем вызове, не переопределяются перехватчиками, добавленными в последующий вызов. |
| ConfigureLoggingCacheTime(TimeSpan) |
Указывает, как долго EF Core будет кэшировать конфигурацию ведения журнала в определенных высокопроизводительных путях. Это делает EF Core пропускать потенциально дорогостоящие проверки ведения журнала, но означает, что изменения в журнале среды выполнения (например, регистрация нового DiagnosticListener может не учитываться сразу). По умолчанию используется одна секунда. |
| ConfigureWarnings(Action<WarningsConfigurationBuilder>) |
Настраивает поведение среды выполнения предупреждений, созданных Entity Framework. Вы можете задать поведение и поведение по умолчанию для каждого типа предупреждения. Обратите внимание, что изменение этой конфигурации может привести к созданию нового внутреннего поставщика услуг EF, что может привести к проблемам с производительностью. Как правило, предполагается, что для данного приложения будет использоваться не более одной или двух разных конфигураций. Обратите внимание, что если приложение задает внутренний поставщик услуг через вызов UseInternalServiceProvider(IServiceProvider), этот параметр должен быть настроен таким же образом для всех видов использования этого поставщика услуг. Вместо этого рассмотрите возможность вызова UseInternalServiceProvider(IServiceProvider) , чтобы EF управляла поставщиками услуг и может создавать новые экземпляры по мере необходимости. |
| ConfigureWarnings(Action<WarningsConfigurationBuilder>) |
Настраивает поведение среды выполнения предупреждений, созданных Entity Framework. Вы можете задать поведение и поведение по умолчанию для каждого типа предупреждения. |
| EnableDetailedErrors(Boolean) |
Включает подробные ошибки при обработке исключений значений данных, возникающих во время обработки результатов запроса хранилища. Такие ошибки чаще всего возникают из-за неправильной настройки свойств сущности. Например, если свойство имеет тип int, но базовые данные в хранилище фактически имеют тип string, то во время обработки значения данных создается исключение. Если этот параметр включен и возникает ошибка данных, созданное исключение будет включать сведения о конкретном свойстве сущности, которое вызвало ошибку. Включение этого параметра вызывает небольшие затраты на производительность во время выполнения запроса. Обратите внимание, что если приложение задает внутренний поставщик услуг через вызов UseInternalServiceProvider(IServiceProvider), этот параметр должен быть настроен таким же образом для всех видов использования этого поставщика услуг. Вместо этого рассмотрите возможность вызова UseInternalServiceProvider(IServiceProvider) , чтобы EF управляла поставщиками услуг и может создавать новые экземпляры по мере необходимости. |
| EnableSensitiveDataLogging() |
Позволяет включать данные приложения в сообщения об исключениях, ведение журнала и т. д. Это может включать значения, назначенные свойствам экземпляров сущности, значения параметров для команд, отправляемых в базу данных, и другие такие данные. Этот флаг следует включить, только если установлены соответствующие меры безопасности на основе конфиденциальности этих данных. |
| EnableSensitiveDataLogging(Boolean) |
Позволяет включать данные приложения в сообщения об исключениях, ведение журнала и т. д. Это может включать значения, назначенные свойствам экземпляров сущности, значения параметров для команд, отправляемых в базу данных, и другие такие данные. Этот флаг следует включить, только если установлены соответствующие меры безопасности на основе конфиденциальности этих данных. Обратите внимание, что если приложение задает внутренний поставщик услуг через вызов UseInternalServiceProvider(IServiceProvider), этот параметр должен быть настроен таким же образом для всех видов использования этого поставщика услуг. Вместо этого рассмотрите возможность вызова UseInternalServiceProvider(IServiceProvider) , чтобы EF управляла поставщиками услуг и может создавать новые экземпляры по мере необходимости. |
| EnableServiceProviderCaching(Boolean) |
Включает или отключает кэширование внутренних поставщиков услуг. Отключение кэширования может значительно повлиять на производительность и следует использовать только в сценариях тестирования, которые создают множество поставщиков услуг для изоляции тестов. Обратите внимание, что если приложение устанавливает внутренний поставщик услуг через вызов UseInternalServiceProvider(IServiceProvider), то установка этого параметра не действует. |
| EnableThreadSafetyChecks(Boolean) |
Отключает обнаружение параллелизма, которое обнаруживает многие случаи ошибочного параллельного использования экземпляра DbContext и вызывает информативное исключение. Это обеспечивает незначительное улучшение производительности, но если DbContext экземпляр используется одновременно, поведение будет неопределенным, и программа может завершиться сбоем непредсказуемыми способами. Отключите обнаружение параллелизма только после подтверждения значительного увеличения производительности, и приложение тщательно протестировано на наличие ошибок параллелизма. Обратите внимание, что если приложение задает внутренний поставщик услуг через вызов UseInternalServiceProvider(IServiceProvider), этот параметр должен быть настроен таким же образом для всех видов использования этого поставщика услуг. Вместо этого рассмотрите возможность вызова UseInternalServiceProvider(IServiceProvider) , чтобы EF управляла поставщиками услуг и может создавать новые экземпляры по мере необходимости. |
| LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) |
Регистрирует события, отфильтрованные предоставленным делегатом настраиваемого фильтра. Фильтр должен возвращать значение true для регистрации сообщения или false, чтобы отфильтровать его из журнала. Используйте перегрузку LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) для ведения журнала по умолчанию всех событий. LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) Используйте перегрузку LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) для регистрации только событий в определенных категориях. Используйте перегрузку LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) для регистрации в полностью настраиваемом средстве ведения журнала. |
| LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) |
Регистрирует указанные события с помощью указанного действия. Например, используйте Используйте перегрузку LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) для ведения журнала по умолчанию всех событий. Используйте перегрузку LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) для регистрации только событий в определенных категориях. Используйте перегрузку LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) для использования настраиваемого фильтра для событий. Используйте перегрузку LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) для регистрации в полностью настраиваемом средстве ведения журнала. |
| LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) |
Регистрирует все события в указанных категориях с помощью указанного действия. Например, можно Используйте перегрузку LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) для ведения журнала по умолчанию всех событий. Используйте перегрузку LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) для регистрации только определенных событий. Используйте перегрузку LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) для использования настраиваемого фильтра для событий. Используйте перегрузку LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) для регистрации в полностью настраиваемом средстве ведения журнала. |
| LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) |
Журналы с использованием указанного действия. Например, используйте Эта перегрузка позволяет управлять минимальным уровнем ведения журнала и форматированием журнала. Используйте перегрузку LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) для регистрации только определенных событий. Используйте перегрузку LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) для регистрации только событий в определенных категориях. Используйте перегрузку LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) для использования настраиваемого фильтра для событий. Используйте перегрузку LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) для регистрации в полностью настраиваемом средстве ведения журнала. |
| LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) |
Записывает события в пользовательский делегат средства ведения журнала, отфильтрованный пользовательским делегатом фильтра. Фильтр должен возвращать значение true для регистрации сообщения или false, чтобы отфильтровать его из журнала. Используйте перегрузку LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) для ведения журнала по умолчанию всех событий. LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) Используйте перегрузку LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) для регистрации только событий в определенных категориях. Используйте перегрузку LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) для использования настраиваемого фильтра для событий. |
| ReplaceService<TService,TCurrentImplementation,TNewImplementation>() |
Заменяет внутреннюю реализацию Entity Framework определенной реализации контракта службы другой реализацией. Этот метод полезен для замены одного экземпляра служб, которые могут быть законно зарегистрированы несколько раз во внутреннем поставщике услуг EF. Этот метод можно использовать только в том случае, если EF создает внутренний поставщик услуг и управляет ими. Если поставщик услуг создается на внешних устройствах и передается UseInternalServiceProvider(IServiceProvider), то службы замены следует настроить на этом поставщике служб перед передачей в EF. Служба замены получает ту же область, что и служба EF, которую она заменяет. |
| ReplaceService<TService,TImplementation>() |
Заменяет все внутренние реализации Entity Framework контракта службы другой реализацией. Этот метод можно использовать только при создании и управлении внутренним поставщиком услуг EF. Если поставщик услуг создается извне и передается UseInternalServiceProvider(IServiceProvider), службы замены следует настроить на этом поставщике услуг перед передачей в EF. Служба замены получает ту же область, что и служба EF, которую она заменяет. |
| UseApplicationServiceProvider(IServiceProvider) |
Задает значение, IServiceProvider из которого будут получены службы приложений. Это делается автоматически при использовании AddDbContext или AddDbContextPool, поэтому редко вызывается этот метод. |
| UseInternalServiceProvider(IServiceProvider) |
Задает значение IServiceProvider , из которое контекст должен разрешать все службы. EF создаст поставщик услуг и управляет им, если он не указан. Поставщик служб должен содержать все службы, необходимые Entity Framework (и используемую базу данных). Службы Entity Framework можно зарегистрировать с помощью метода IServiceCollectionрасширения. Например, поставщик Microsoft SQL Server включает метод AddEntityFrameworkSqlServer() для добавления необходимых служб. IServiceProvider Если у него есть DbContextOptions или DbContextOptions<TContext> зарегистрирован, это будет использоваться в качестве параметров для данного экземпляра контекста. |
| UseLoggerFactory(ILoggerFactory) |
ILoggerFactory Задает значение, которое будет использоваться для создания ILogger экземпляров для ведения журнала, выполняемого этим контекстом. При использовании одного из методов AddDbContext не требуется вызывать этот метод, включая AddDbContextPool. Эти методы обеспечивают получение используемого ILoggerFactory EF от поставщика службы приложений. Этот метод нельзя использовать, если приложение задает внутренний поставщик услуг с помощью вызова UseInternalServiceProvider(IServiceProvider). В этом случае ILoggerFactory его следует настроить непосредственно в этом поставщике услуг. |
| UseMemoryCache(IMemoryCache) |
Задает значение, IMemoryCache которое будет использоваться для кэширования запросов этим контекстом. Обратите внимание, что изменение кэша памяти может привести к созданию нового внутреннего поставщика услуг EF, что может привести к проблемам с производительностью. Как правило, предполагается, что для данного приложения будет использоваться не более одного или двух разных экземпляров. Этот метод нельзя использовать, если приложение задает внутренний поставщик услуг с помощью вызова UseInternalServiceProvider(IServiceProvider). В этом случае IMemoryCache его следует настроить непосредственно в этом поставщике услуг. |
| UseModel(IModel) |
Задает модель, используемую для контекста. Если модель задана, OnModelCreating(ModelBuilder) то не будет выполняться. Если необходимо сначала вызвать внешнюю созданную модель FinalizeModel() . |
| UseQueryTrackingBehavior(QueryTrackingBehavior) |
Задает поведение отслеживания для запросов LINQ, выполняемых в контексте. Отключение отслеживания изменений полезно для сценариев только для чтения, так как это позволяет избежать дополнительных затрат на настройку отслеживания изменений для каждого экземпляра сущности. Не следует отключать отслеживание изменений, если вы хотите управлять экземплярами сущностей и сохранять эти изменения в базе данных с помощью SaveChanges(). Этот метод задает поведение по умолчанию для всех контекстов, созданных с помощью этих параметров, но это поведение можно переопределить для экземпляра контекста с помощью QueryTrackingBehavior отдельных запросов или отдельных запросов с помощью AsNoTracking<TEntity>(IQueryable<TEntity>) методов.AsTracking<TEntity>(IQueryable<TEntity>) Значение по умолчанию — TrackAll. Это означает, что средство отслеживания изменений будет отслеживать изменения для всех сущностей, возвращаемых из запроса LINQ. |
Явные реализации интерфейса
| IDbContextOptionsBuilderInfrastructure.AddOrUpdateExtension<TExtension>(TExtension) |
Добавляет данное расширение в параметры. Если существующее расширение того же типа уже существует, оно будет заменено. Этот метод предназначен для использования методами расширения для настройки контекста. Он не предназначен для использования в коде приложения. |
Методы расширения
| UseCosmos(DbContextOptionsBuilder, String, String, Action<CosmosDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных Azure Cosmos. |
| UseCosmos(DbContextOptionsBuilder, String, String, String, Action<CosmosDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных Azure Cosmos. |
| UseInMemoryDatabase(DbContextOptionsBuilder, Action<InMemoryDbContextOptionsBuilder>) |
Является устаревшей.
Является устаревшей.
Настраивает контекст для подключения к устаревшей общей базе данных в памяти. Этот метод устарел. Взамен рекомендуется использовать UseInMemoryDatabase(DbContextOptionsBuilder, String, Action<InMemoryDbContextOptionsBuilder>). |
| UseInMemoryDatabase(DbContextOptionsBuilder, String, InMemoryDatabaseRoot, Action<InMemoryDbContextOptionsBuilder>) |
Настраивает контекст для подключения к именованной базе данных в памяти. База данных в памяти используется в любом месте, где используется то же имя, но только для заданного поставщика услуг. |
| UseInMemoryDatabase(DbContextOptionsBuilder, String, Action<InMemoryDbContextOptionsBuilder>) |
Настраивает контекст для подключения к именованной базе данных в памяти. База данных в памяти используется в любом месте, где используется то же имя, но только для заданного поставщика услуг. Чтобы использовать одну и ту же базу данных в памяти в разных поставщиках услуг, вызовите UseInMemoryDatabase(DbContextOptionsBuilder, String, InMemoryDatabaseRoot, Action<InMemoryDbContextOptionsBuilder>) передачу общего доступа InMemoryDatabaseRoot к базе данных, в которой следует корень базы данных. |
| UseChangeTrackingProxies(DbContextOptionsBuilder, Boolean, Boolean) |
Включает создание прокси-серверов отслеживания изменений. Обратите внимание, что для этого требуются соответствующие службы, доступные во внутреннем поставщике служб EF. Обычно это происходит автоматически, но если приложение управляет поставщиком услуг, может потребоваться вызов AddEntityFrameworkProxies(IServiceCollection) . |
| UseLazyLoadingProxies(DbContextOptionsBuilder, Boolean) |
Включает создание отложенных прокси-серверов. Обратите внимание, что для этого требуются соответствующие службы, доступные во внутреннем поставщике служб EF. Обычно это происходит автоматически, но если приложение управляет поставщиком услуг, может потребоваться вызов AddEntityFrameworkProxies(IServiceCollection) . |
| UseSqlite(DbContextOptionsBuilder, Action<SqliteDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных SQLite, но без первоначальной настройки строки DbConnection подключения. Перед подключением к базе данных необходимо задать DbContext строку подключения или подключения. Установка подключения с помощью SetDbConnection(DatabaseFacade, DbConnection). Задайте строку подключения с помощью SetConnectionString(DatabaseFacade, String). |
| UseSqlite(DbContextOptionsBuilder, DbConnection, Action<SqliteDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных SQLite. |
| UseSqlite(DbContextOptionsBuilder, String, Action<SqliteDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных SQLite. |
| UseSqlServer(DbContextOptionsBuilder, Action<SqlServerDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных Microsoft SQL Server, но без первоначальной настройки какой-либо DbConnection строки подключения или строки подключения. Перед подключением к базе данных необходимо задать DbContext строку подключения или подключения. Установка подключения с помощью SetDbConnection(DatabaseFacade, DbConnection). Задайте строку подключения с помощью SetConnectionString(DatabaseFacade, String). |
| UseSqlServer(DbContextOptionsBuilder, DbConnection, Action<SqlServerDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных Microsoft SQL Server. |
| UseSqlServer(DbContextOptionsBuilder, String, Action<SqlServerDbContextOptionsBuilder>) |
Настраивает контекст для подключения к базе данных Microsoft SQL Server. |
Применяется к
Обратная связь
Отправить и просмотреть отзыв по