DbContextOptionsBuilder Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje jednoduchou plochu rozhraní API pro konfiguraci DbContextOptions . Databáze (a jiná rozšíření) obvykle definují metody rozšíření na tomto objektu, které umožňují konfigurovat připojení k databázi (a další možnosti), které se mají použít pro kontext.
Můžete použít DbContextOptionsBuilder ke konfiguraci kontextu přepsáním OnConfiguring(DbContextOptionsBuilder) nebo vytvořením DbContextOptions externě a předáním do konstruktoru kontextu.
public class DbContextOptionsBuilder : Microsoft.EntityFrameworkCore.Infrastructure.IDbContextOptionsBuilderInfrastructure
type DbContextOptionsBuilder = class
interface IDbContextOptionsBuilderInfrastructure
Public Class DbContextOptionsBuilder
Implements IDbContextOptionsBuilderInfrastructure
- Dědičnost
-
DbContextOptionsBuilder
- Odvozené
- Implementuje
Konstruktory
| DbContextOptionsBuilder() |
Inicializuje novou instanci DbContextOptionsBuilder třídy bez nastavených možností. |
| DbContextOptionsBuilder(DbContextOptions) |
Inicializuje novou instanci DbContextOptionsBuilder třídy pro další konfiguraci daného DbContextOptions . |
Vlastnosti
| IsConfigured |
Načte hodnotu, která označuje, jestli jsou nějaké možnosti nakonfigurované. To může být užitečné, pokud jste přepsali OnConfiguring(DbContextOptionsBuilder) konfiguraci kontextu, ale v některých případech také externě poskytujete možnosti prostřednictvím konstruktoru kontextu. Tato vlastnost slouží k určení, zda již byly nastaveny možnosti, a přeskočit některé nebo všechny logiky v OnConfiguring(DbContextOptionsBuilder) . |
| Options |
Získá možnosti, které jsou nakonfigurovány. |
Metody
| AddInterceptors(IEnumerable<IInterceptor>) |
Přidá IInterceptor instance do těch zaregistrovaných v kontextu. Zachycení lze použít k zobrazení, změně nebo potlačení operací pořízených Entity Framework. Podrobnosti najdete v tématu konkrétní implementace IInterceptor . Například ' IDbCommandInterceptor '. Jedna instance zachytávací může implementovat několik různých rozhraní zachytávací. Bude se registrovat jako zachytávací pro všechna rozhraní, která implementuje. Rozšíření mohou také registrovat více IInterceptor s v interním poskytovateli služeb. Pokud jsou nalezeny vložené a zachycené aplikace, jsou vložené zachyceny spouštěny v pořadí, ve kterém jsou vyřešeny od poskytovatele služeb, a poté jsou spuštěny v pořadí, v jakém byly přidány do kontextu. Volání této metody několikrát způsobí, že se všechny zachycení v každém volání přidávají do kontextu. Zachycené metody přidané v předchozím volání nejsou přepsány zachycenými uživateli přidanými v pozdějším volání. |
| AddInterceptors(IInterceptor[]) |
Přidá IInterceptor instance do těch zaregistrovaných v kontextu. Zachycení lze použít k zobrazení, změně nebo potlačení operací pořízených Entity Framework. Podrobnosti najdete v tématu konkrétní implementace IInterceptor . Například ' IDbCommandInterceptor '. Rozšíření mohou také registrovat více IInterceptor s v interním poskytovateli služeb. Pokud jsou nalezeny vložené a zachycené aplikace, jsou vložené zachyceny spouštěny v pořadí, ve kterém jsou vyřešeny od poskytovatele služeb, a poté jsou spuštěny v pořadí, v jakém byly přidány do kontextu. Volání této metody několikrát způsobí, že se všechny zachycení v každém volání přidávají do kontextu. Zachycené metody přidané v předchozím volání nejsou přepsány zachycenými uživateli přidanými v pozdějším volání. |
| ConfigureWarnings(Action<WarningsConfigurationBuilder>) |
Nakonfiguruje chování při běhu upozornění vygenerovaných Entity Framework. Pro každý typ upozornění můžete nastavit výchozí chování a chování. Všimněte si, že změna této konfigurace může způsobit, že EF vytvoří nového interního poskytovatele služeb, což může způsobit problémy s výkonem. Obecně se očekává, že se pro danou aplikaci nepoužijí žádné více než jedna nebo dvě různé konfigurace. Všimněte si, že pokud aplikace nastavuje interního poskytovatele služeb prostřednictvím volání UseInternalServiceProvider(IServiceProvider) , musí být tato možnost nakonfigurovaná stejným způsobem pro všechna použití tohoto poskytovatele služeb. Zvažte místo toho nevolání UseInternalServiceProvider(IServiceProvider) , aby EF mohl spravovat poskytovatele služeb a může vytvořit nové instance podle potřeby. |
| ConfigureWarnings(Action<WarningsConfigurationBuilder>) |
Nakonfiguruje chování při běhu upozornění vygenerovaných Entity Framework. Pro každý typ upozornění můžete nastavit výchozí chování a chování. |
| EnableDetailedErrors(Boolean) |
Povoluje podrobné chyby při zpracování výjimek hodnot dat, ke kterým dojde během zpracování výsledků dotazu na úložiště. K těmto chybám dochází nejčastěji z důvodu chybné konfigurace vlastností entity. Například Pokud je vlastnost nakonfigurovaná tak, aby byla typu int, ale podkladová data ve Storu jsou ve skutečnosti typu String, pak se při zpracování hodnoty dat za běhu vygeneruje výjimka. Pokud je tato možnost povolená a dojde k chybě dat, Vygenerovaná výjimka bude obsahovat podrobnosti o konkrétní vlastnosti entity, která generovala chybu. Když se tato možnost povolí, dojde při provádění dotazu k malým nárokům na výkon. Všimněte si, že pokud aplikace nastavuje interního poskytovatele služeb prostřednictvím volání UseInternalServiceProvider(IServiceProvider) , musí být tato možnost nakonfigurovaná stejným způsobem pro všechna použití tohoto poskytovatele služeb. Zvažte místo toho nevolání UseInternalServiceProvider(IServiceProvider) , aby EF mohl spravovat poskytovatele služeb a může vytvořit nové instance podle potřeby. |
| EnableSensitiveDataLogging() |
Povoluje zahrnutí dat aplikace do zpráv výjimek, protokolování atd. To může zahrnovat hodnoty přiřazené vlastnostem instancí entit, hodnoty parametrů pro příkazy odesílané do databáze a další taková data. Tento příznak byste měli povolit pouze v případě, že jsou na základě citlivosti těchto dat zavedena příslušná bezpečnostní opatření. |
| EnableSensitiveDataLogging(Boolean) |
Povoluje zahrnutí dat aplikace do zpráv výjimek, protokolování atd. To může zahrnovat hodnoty přiřazené vlastnostem instancí entit, hodnoty parametrů pro příkazy odesílané do databáze a další taková data. Tento příznak byste měli povolit pouze v případě, že jsou na základě citlivosti těchto dat zavedena příslušná bezpečnostní opatření. Všimněte si, že pokud aplikace nastavuje interního poskytovatele služeb prostřednictvím volání UseInternalServiceProvider(IServiceProvider) , musí být tato možnost nakonfigurovaná stejným způsobem pro všechna použití tohoto poskytovatele služeb. Zvažte místo toho nevolání UseInternalServiceProvider(IServiceProvider) , aby EF mohl spravovat poskytovatele služeb a může vytvořit nové instance podle potřeby. |
| EnableServiceProviderCaching(Boolean) |
Povolí nebo zakáže ukládání interních poskytovatelů služeb do mezipaměti. Zákaz ukládání do mezipaměti může mít velký dopad na výkon a měl by se používat jenom v testovacích scénářích, které sestavují mnoho poskytovatelů služeb pro izolaci testů Všimněte si, že pokud aplikace nastavuje interního poskytovatele služeb prostřednictvím volání UseInternalServiceProvider(IServiceProvider) , pak nastavení této možnosti probíhal nemá žádný vliv. |
| LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) |
Protokoluje události filtrované dodaným delegátem vlastního filtru. Filtr by měl vrátit hodnotu true, aby protokoloval zprávu, nebo NEPRAVDA pro filtrování z protokolu. LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>)Pro výchozí protokolování všech událostí použijte přetížení. Použijte LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) k protokolování událostí v určitých kategoriích jenom události Overload. Pomocí LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) přetížení můžete protokolovat do plně vlastního protokolovacího nástroje. |
| LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) |
Zaznamená zadané události pomocí zadané akce. Například použijte LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>)Pro výchozí protokolování všech událostí použijte přetížení. Použijte metodu LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) Overload pro protokolování pouze událostí v určitých kategoriích. Použijte LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) přetížení k použití vlastního filtru pro události. Pomocí LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) přetížení můžete protokolovat do plně vlastního protokolovacího nástroje. |
| LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) |
Protokoluje všechny události v zadaných kategoriích pomocí zadané akce. K protokolování všech událostí v kategorii použijte například LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>)Pro výchozí protokolování všech událostí použijte přetížení. Použijte metodu LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) Overload k protokolování pouze konkrétních událostí. Použijte LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) přetížení k použití vlastního filtru pro události. Pomocí LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) přetížení můžete protokolovat do plně vlastního protokolovacího nástroje. |
| LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>) |
Protokoluje pomocí zadané akce. Použijte například Toto přetížení umožňuje ovládat minimální úroveň protokolování a formátování protokolu. Použijte LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) přetížení pro protokolování pouze konkrétních událostí. Použijte metodu LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) Overload pro protokolování pouze událostí v určitých kategoriích. Použijte LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) přetížení k použití vlastního filtru pro události. Pomocí LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) přetížení můžete protokolovat do plně vlastního protokolovacího nástroje. |
| LogTo(Func<EventId,LogLevel,Boolean>, Action<EventData>) |
Protokoluje události do vlastního delegáta protokolovacího nástroje filtrovaného delegátem vlastního filtru. Filtr by měl vrátit hodnotu true, aby protokoloval zprávu, nebo NEPRAVDA pro filtrování z protokolu. LogTo(Action<String>, LogLevel, Nullable<DbContextLoggerOptions>)Pro výchozí protokolování všech událostí použijte přetížení. Použijte LogTo(Action<String>, IEnumerable<EventId>, LogLevel, Nullable<DbContextLoggerOptions>) LogTo(Action<String>, IEnumerable<String>, LogLevel, Nullable<DbContextLoggerOptions>) k protokolování událostí v určitých kategoriích jenom události Overload. Použijte LogTo(Action<String>, Func<EventId,LogLevel,Boolean>, Nullable<DbContextLoggerOptions>) přetížení k použití vlastního filtru pro události. |
| ReplaceService<TService,TCurrentImplementation,TNewImplementation>() |
Nahrazuje interní Entity Framework implementaci konkrétní implementace kontraktu služby s jinou implementací. Tato metoda je užitečná pro nahrazení jedné instance služeb, které mohou být ve vnitřním poskytovateli služeb EF vícekrát registrovány. Tato metoda se dá použít jenom v případě, že EF sestavuje a spravuje svého interního poskytovatele služeb. Pokud poskytovatel služby sestavíte externě a předává je UseInternalServiceProvider(IServiceProvider) , je nutné, aby před předáním do EF nakonfigurovali náhradní služby na tohoto poskytovatele služeb. Nahrazující služba získá stejný obor jako služba EF, kterou nahrazuje. |
| ReplaceService<TService,TImplementation>() |
Nahradí všechny interní Entity Framework implementace kontraktu služby jinou implementací. Tato metoda se dá použít jenom v případě, že EF sestavuje a spravuje svého interního poskytovatele služeb. Pokud poskytovatel služby sestavíte externě a předává je UseInternalServiceProvider(IServiceProvider) , je nutné, aby před předáním do EF nakonfigurovali náhradní služby na tohoto poskytovatele služeb. Nahrazující služba získá stejný obor jako služba EF, kterou nahrazuje. |
| UseApplicationServiceProvider(IServiceProvider) |
Nastaví, IServiceProvider od kterého se budou aplikační služby získávat. To se provádí automaticky při použití ' AddDbContext ' nebo ' AddDbContextPool ', takže je pravděpodobné, že tato metoda musí být volána. |
| UseInternalServiceProvider(IServiceProvider) |
Nastaví IServiceProvider , jak by měl kontext vyřešit všechny své služby z. EF vytvoří a bude spravovat poskytovatele služeb, pokud není zadaný žádný. Poskytovatel služeb musí obsahovat všechny služby požadované Entity Frameworkem (a databází, která se používá). Služby Entity Framework lze registrovat pomocí metody rozšíření na IServiceCollection . Například poskytovatel Microsoft SQL Server obsahuje metodu AddEntityFrameworkSqlServer () pro přidání požadovaných služeb. Pokud IServiceProvider má DbContextOptions nebo DbContextOptions<TContext> zaregistrován, pak bude použit jako možnosti této instance kontextu. |
| UseLoggerFactory(ILoggerFactory) |
Nastaví ILoggerFactory , který bude použit k vytvoření ILogger instancí pro protokolování v tomto kontextu. Není nutné volat tuto metodu při použití jedné z metod ' AddDbContext ', včetně ' AddDbContextPool '. Tyto metody zajišťují, že ILoggerFactory je od poskytovatele služby Application Service získána metoda používaná v EF. Tuto metodu nelze použít, pokud aplikace nastavuje interního poskytovatele služeb prostřednictvím volání UseInternalServiceProvider(IServiceProvider) . V takovém případě ILoggerFactory by měl být nakonfigurován přímo v tomto poskytovateli služeb. |
| UseMemoryCache(IMemoryCache) |
Nastaví, IMemoryCache aby se použil pro dotazování do mezipaměti tohoto kontextu. Všimněte si, že změna mezipaměti paměti může způsobit, že EF vytvoří nového interního poskytovatele služeb, což může způsobit problémy s výkonem. Obecně se očekává, že pro danou aplikaci nebude použito více než jedna nebo dvě různé instance. Tuto metodu nelze použít, pokud aplikace nastavuje interního poskytovatele služeb prostřednictvím volání UseInternalServiceProvider(IServiceProvider) . V takovém případě IMemoryCache by měl být nakonfigurován přímo v tomto poskytovateli služeb. |
| UseModel(IModel) |
Nastaví model, který se má použít pro kontext. Pokud je model nastavený, pak OnModelCreating(ModelBuilder) se nespustí. Pokud by se mělo nastavit externě vytvořený model FinalizeModel() jako první. |
| UseQueryTrackingBehavior(QueryTrackingBehavior) |
Nastaví chování sledování pro dotazy LINQ spouštěné v kontextu. Vypnutí sledování změn je užitečné pro scénáře, které jsou jen pro čtení, protože brání režii při nastavování sledování změn pro každou instanci entity. Sledování změn byste neměli zakazovat, pokud chcete manipulovat s instancemi entit a zachovat tyto změny v databázi pomocí SaveChanges() . Tato metoda nastaví výchozí chování pro všechny kontexty vytvořené pomocí těchto možností, ale toto chování lze přepsat pro instanci kontextu pomocí QueryTrackingBehavior nebo u jednotlivých dotazů pomocí AsNoTracking<TEntity>(IQueryable<TEntity>) AsTracking<TEntity>(IQueryable<TEntity>) metod a. Výchozí hodnota je TrackAll. To znamená, že sledování změn bude sledovat změny všech entit, které jsou vráceny z dotazu LINQ. |
Explicitní implementace rozhraní
| IDbContextOptionsBuilderInfrastructure.AddOrUpdateExtension<TExtension>(TExtension) |
Přidá dané rozšíření k možnostem. Pokud existující rozšíření stejného typu již existuje, bude nahrazeno. Tato metoda je určena pro použití metodami rozšíření ke konfiguraci kontextu. Není určen pro použití v kódu aplikace. |
Metody rozšíření
| UseCosmos(DbContextOptionsBuilder, String, String, Action<CosmosDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k databázi Azure Cosmos. |
| UseCosmos(DbContextOptionsBuilder, String, String, String, Action<CosmosDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k databázi Azure Cosmos. |
| UseInMemoryDatabase(DbContextOptionsBuilder, Action<InMemoryDbContextOptionsBuilder>) |
Zastaralé.
Zastaralé.
Nakonfiguruje kontext pro připojení ke sdílené staré databázi v paměti. Tato metoda je zastaralá. Místo toho použijte UseInMemoryDatabase(DbContextOptionsBuilder, String, Action<InMemoryDbContextOptionsBuilder>). |
| UseInMemoryDatabase(DbContextOptionsBuilder, String, InMemoryDatabaseRoot, Action<InMemoryDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k pojmenované databázi v paměti. Databáze v paměti je sdílená kdekoli, kde se používá stejný název, ale jenom pro daného poskytovatele služeb. |
| UseInMemoryDatabase(DbContextOptionsBuilder, String, Action<InMemoryDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k pojmenované databázi v paměti. Databáze v paměti je sdílená kdekoli, kde se používá stejný název, ale jenom pro daného poskytovatele služeb. Chcete-li použít stejnou databázi v paměti mezi poskytovateli služeb, zavolejte UseInMemoryDatabase(DbContextOptionsBuilder, String, InMemoryDatabaseRoot, Action<InMemoryDbContextOptionsBuilder>) předání sdílené InMemoryDatabaseRoot složky, na které má být databáze kořenem. |
| UseChangeTrackingProxies(DbContextOptionsBuilder, Boolean, Boolean) |
Zapne vytváření proxy serverů pro sledování změn. Všimněte si, že tato operace vyžaduje, aby byly v interním zprostředkovateli služeb EF k dispozici příslušné služby. K tomu normálně dojde automaticky, ale pokud aplikace řídí poskytovatele služby, AddEntityFrameworkProxies(IServiceCollection) může být nutné zavolat na. |
| UseLazyLoadingProxies(DbContextOptionsBuilder, Boolean) |
Zapne vytváření opožděného načítání proxy serverů. Všimněte si, že tato operace vyžaduje, aby byly v interním zprostředkovateli služeb EF k dispozici příslušné služby. K tomu normálně dojde automaticky, ale pokud aplikace řídí poskytovatele služby, AddEntityFrameworkProxies(IServiceCollection) může být nutné zavolat na. |
| UseSqlite(DbContextOptionsBuilder, Action<SqliteDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k databázi SQLite, ale bez prvotního nastavení jakéhokoli DbConnection nebo připojovacího řetězce. Připojení nebo připojovací řetězec musí být nastaveno předtím, než DbContext se použije pro připojení k databázi. Nastavte připojení pomocí SetDbConnection(DatabaseFacade, DbConnection) . Nastavte připojovací řetězec pomocí SetConnectionString(DatabaseFacade, String) . |
| UseSqlite(DbContextOptionsBuilder, DbConnection, Action<SqliteDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k databázi SQLite. |
| UseSqlite(DbContextOptionsBuilder, String, Action<SqliteDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k databázi SQLite. |
| UseSqlServer(DbContextOptionsBuilder, Action<SqlServerDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k Microsoft SQL Server databázi, ale bez prvotního nastavení jakéhokoli DbConnection nebo připojovacího řetězce. Připojení nebo připojovací řetězec musí být nastaveno předtím, než DbContext se použije pro připojení k databázi. Nastavte připojení pomocí SetDbConnection(DatabaseFacade, DbConnection) . Nastavte připojovací řetězec pomocí SetConnectionString(DatabaseFacade, String) . |
| UseSqlServer(DbContextOptionsBuilder, DbConnection, Action<SqlServerDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k databázi Microsoft SQL Server. |
| UseSqlServer(DbContextOptionsBuilder, String, Action<SqlServerDbContextOptionsBuilder>) |
Nakonfiguruje kontext pro připojení k databázi Microsoft SQL Server. |