Sdílet prostřednictvím


DatabaseFacade Třída

Definice

Poskytuje přístup k informacím a operacím souvisejícím s databází pro určitý kontext. Instance této třídy se obvykle získávají z Database a nejsou navrženy tak, aby byly přímo vytvořeny v kódu aplikace.

public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
    interface IResettableService
Public Class DatabaseFacade
Implements IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider), IResettableService
Dědičnost
DatabaseFacade
Implementuje
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor IDatabaseFacadeDependenciesAccessor IResettableService

Konstruktory

DatabaseFacade(DbContext)

Inicializuje novou instanci DatabaseFacade třídy . Instance této třídy se obvykle získávají z Database a nejsou navrženy tak, aby byly přímo vytvořeny v kódu aplikace.

Vlastnosti

AutoSavepointsEnabled

Zda se bod uložení transakce vytvoří automaticky, pokud SaveChanges() je volána po ručním spuštění transakce s BeginTransaction().

AutoTransactionBehavior

Získá nebo nastaví hodnotu označující, zda bude transakce vytvořena automaticky, SaveChanges() pokud beginTransaction ani 'UseTransaction' byla volána.

AutoTransactionsEnabled
Zastaralé.
Zastaralé.

Získá nebo nastaví hodnotu označující, zda bude transakce vytvořena automaticky, SaveChanges() pokud nebyla volána žádná z metod BeginTransaction nebo UseTransaction.

CurrentTransaction

Získá aktuální IDbContextTransaction , který se používá kontext, nebo null, pokud se nepoužívá žádná transakce.

ProviderName

Vrátí název aktuálně používaného poskytovatele databáze. Název je obvykle název sestavení zprostředkovatele. Obvykle je jednodušší použít metodu cukru, například Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer místo volání této metody přímo.

Metody

BeginTransaction()

Spustí novou transakci.

BeginTransactionAsync(CancellationToken)

Asynchronně spustí novou transakci.

CanConnect()

Určuje, zda je databáze k dispozici a může být připojena.

CanConnectAsync(CancellationToken)

Určuje, zda je databáze k dispozici a může být připojena.

CommitTransaction()

Použije nevyřešené operace v aktuální transakci na databázi.

CommitTransactionAsync(CancellationToken)

Použije nevyřešené operace v aktuální transakci na databázi.

CreateExecutionStrategy()

Vytvoří instanci konfigurovaného IExecutionStrategyobjektu .

EnsureCreated()

Zajišťuje, že databáze pro daný kontext existuje.

EnsureCreatedAsync(CancellationToken)

Zajišťuje, že databáze pro daný kontext existuje.

EnsureDeleted()

Zajišťuje, že databáze pro kontext neexistuje. Pokud neexistuje, neprovede se žádná akce. Pokud existuje, je databáze odstraněna.

Upozornění: Odstraní se celá databáze a není vynaloženo úsilí na odebrání pouze databázových objektů, které model používá pro tento kontext.

EnsureDeletedAsync(CancellationToken)

Asynchronně zajišťuje, že databáze pro kontext neexistuje. Pokud neexistuje, neprovede se žádná akce. Pokud existuje, je databáze odstraněna.

Upozornění: Odstraní se celá databáze a není vynaloženo úsilí na odebrání pouze databázových objektů, které model používá pro tento kontext.

RollbackTransaction()

Zahodí nevyřešené operace v aktuální transakci.

RollbackTransactionAsync(CancellationToken)

Zahodí nevyřešené operace v aktuální transakci.

Explicitní implementace rozhraní

IDatabaseFacadeDependenciesAccessor.Context

Jedná se o interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. V libovolné verzi může být bez upozornění změněna nebo odebrána. Měli byste ho používat přímo v kódu pouze s mimořádnou opatrností a s vědomím, že při aktualizaci na novou verzi Entity Framework Core může dojít k selháním aplikace.

IDatabaseFacadeDependenciesAccessor.Dependencies

Jedná se o interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. V libovolné verzi může být bez upozornění změněna nebo odebrána. Měli byste ho používat přímo v kódu pouze s mimořádnou opatrností a s vědomím, že při aktualizaci na novou verzi Entity Framework Core může dojít k selháním aplikace.

IInfrastructure<IServiceProvider>.Instance

Získá vymezený IServiceProvider , který se používá k překladu služeb.

Tato vlastnost je určená k použití rozšiřujícími metodami, které potřebují využívat služby, které nejsou přímo vystavené na veřejném prostoru rozhraní API.

IResettableService.ResetState()

Resetuje službu, aby ji bylo možné používat z fondu.

IResettableService.ResetStateAsync(CancellationToken)

Poskytuje přístup k informacím a operacím souvisejícím s databází pro určitý kontext. Instance této třídy se obvykle získávají z Database a nejsou navrženy tak, aby byly přímo vytvořeny v kódu aplikace.

Metody rozšíření

GetCosmosClient(DatabaseFacade)

Získá podkladovou CosmosClient hodnotu pro tento DbContextobjekt .

GetCosmosDatabaseId(DatabaseFacade)

Získá název nakonfigurované databáze pro tento DbContext.

IsCosmos(DatabaseFacade)

Vrátí hodnotu true , pokud je aktuálně používaného poskytovatele databáze poskytovatelem Cosmos.

GetInfrastructure<T>(IInfrastructure<T>)

Získá hodnotu z vlastnosti, která je skryta pomocí IInfrastructure<T>.

Tuto metodu obvykle používají poskytovatelé databází (a další rozšíření). Obvykle se nepoužívá v kódu aplikace.

IsInMemory(DatabaseFacade)

Vrátí hodnotu true , pokud je zprostředkovatel databáze aktuálně používán zprostředkovatelem v paměti.

BeginTransaction(DatabaseFacade, IsolationLevel)

Spustí novou transakci s daným IsolationLevel.

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

Asynchronně spustí novou transakci s daným IsolationLevelobjektem .

CloseConnection(DatabaseFacade)

Zavře základní DbConnectionobjekt .

CloseConnectionAsync(DatabaseFacade)

Zavře základní DbConnectionobjekt .

ExecuteSql(DatabaseFacade, FormattableString)

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlAsync(DatabaseFacade, FormattableString, CancellationToken)

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, IEnumerable<Object>)
Zastaralé.

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction(DatabaseFacade, DbTransaction).

Všimněte si, že aktuální ExecutionStrategy není používán touto metodou, protože SQL nemusí být idempotentní a nespustí v transakci. ExecutionStrategy lze použít explicitně, přičemž nezapomeňte také použít transakci, pokud SQL není idempotentní.

Stejně jako u každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter. Můžete také zvážit použití executeSqlInterpolated k vytvoření parametrů pomocí syntaxe interpolovaných řetězců.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, Object[])
Zastaralé.

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction(DatabaseFacade, DbTransaction).

Všimněte si, že aktuální ExecutionStrategy není používán touto metodou, protože SQL nemusí být idempotentní a nespustí v transakci. ExecutionStrategy lze použít explicitně, přičemž nezapomeňte také použít transakci, pokud SQL není idempotentní.

Stejně jako u každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter – context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Můžete také zvážit použití executeSqlInterpolated k vytvoření parametrů pomocí syntaxe interpolovaných řetězců.

ExecuteSqlCommand(DatabaseFacade, FormattableString)
Zastaralé.

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction(DatabaseFacade, DbTransaction).

Všimněte si, že aktuální ExecutionStrategy není používán touto metodou, protože SQL nemusí být idempotentní a nespustí v transakci. ExecutionStrategy lze použít explicitně, přičemž nezapomeňte také použít transakci, pokud SQL není idempotentní.

Stejně jako u každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter – context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommand(DatabaseFacade, String, Object[])

Poskytuje přístup k informacím a operacím souvisejícím s databází pro určitý kontext. Instance této třídy se obvykle získávají z Database a nejsou navrženy tak, aby byly přímo vytvořeny v kódu aplikace.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, IEnumerable<Object>, CancellationToken)
Zastaralé.

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction(DatabaseFacade, DbTransaction).

Všimněte si, že aktuální ExecutionStrategy není používán touto metodou, protože SQL nemusí být idempotentní a nespustí v transakci. ExecutionStrategy lze použít explicitně, přičemž nezapomeňte také použít transakci, pokud SQL není idempotentní.

Stejně jako u každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter. Můžete také zvážit použití executeSqlInterpolated k vytvoření parametrů pomocí syntaxe interpolovaných řetězců.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, Object[])
Zastaralé.

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction(DatabaseFacade, DbTransaction).

Všimněte si, že aktuální ExecutionStrategy není používán touto metodou, protože SQL nemusí být idempotentní a nespustí v transakci. ExecutionStrategy lze použít explicitně, přičemž nezapomeňte také použít transakci, pokud SQL není idempotentní.

Stejně jako u každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter – context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Můžete také zvážit použití executeSqlInterpolated k vytvoření parametrů pomocí syntaxe interpolovaných řetězců.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
Zastaralé.

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction(DatabaseFacade, DbTransaction).

Všimněte si, že aktuální ExecutionStrategy není používán touto metodou, protože SQL nemusí být idempotentní a nespustí v transakci. ExecutionStrategy lze použít explicitně, přičemž nezapomeňte také použít transakci, pokud SQL není idempotentní.

Stejně jako u každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter – context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
Zastaralé.

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction(DatabaseFacade, DbTransaction).

Všimněte si, že aktuální ExecutionStrategy není používán touto metodou, protože SQL nemusí být idempotentní a nespustí v transakci. ExecutionStrategy lze použít explicitně, přičemž nezapomeňte také použít transakci, pokud SQL není idempotentní.

Stejně jako u každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter – context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommandAsync(DatabaseFacade, String, CancellationToken, Object[])

Poskytuje přístup k informacím a operacím souvisejícím s databází pro určitý kontext. Instance této třídy se obvykle získávají z Database a nejsou navrženy tak, aby byly přímo vytvořeny v kódu aplikace.

ExecuteSqlInterpolated(DatabaseFacade, FormattableString)

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlRaw(DatabaseFacade, String, Object[])

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlRawAsync(DatabaseFacade, String, IEnumerable<Object>, CancellationToken)

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

Spustí daný jazyk SQL proti databázi a vrátí počet ovlivněných řádků.

GenerateCreateScript(DatabaseFacade)

Vygeneruje skript pro vytvoření všech tabulek pro aktuální model.

GetAppliedMigrations(DatabaseFacade)

Získá všechny migrace, které byly použity na cílovou databázi.

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

Asynchronně získá všechny migrace, které byly použity na cílovou databázi.

GetCommandTimeout(DatabaseFacade)

Vrátí časový limit (v sekundách) nastavený pro příkazy spuštěné pomocí tohoto DbContextpříkazu .

GetConnectionString(DatabaseFacade)

Získá podkladovou připojovací řetězec nakonfigurovanou pro tento DbContextobjekt .

GetDbConnection(DatabaseFacade)

Získá základní ADO.NET DbConnection pro tento DbContextobjekt .

GetMigrations(DatabaseFacade)

Získá všechny migrace, které jsou definovány v sestavení nakonfigurované migrace.

GetPendingMigrations(DatabaseFacade)

Získá všechny migrace, které jsou definovány v sestavení, ale nebyly použity na cílovou databázi.

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

Asynchronně získá všechny migrace, které jsou definovány v sestavení, ale nebyly použity na cílovou databázi.

HasPendingModelChanges(DatabaseFacade)

Vrátí hodnotu true , pokud má model čekající změny, které se mají použít.

IsRelational(DatabaseFacade)

Vrátí hodnotu true , pokud se poskytovatel databáze aktuálně používá jako relační databáze.

Migrate(DatabaseFacade)

Použije všechny čekající migrace pro kontext do databáze. Vytvoří databázi, pokud ještě neexistuje.

MigrateAsync(DatabaseFacade, CancellationToken)

Asynchronně použije všechny čekající migrace pro kontext na databázi. Vytvoří databázi, pokud ještě neexistuje.

OpenConnection(DatabaseFacade)

Otevře základní DbConnectionobjekt .

OpenConnectionAsync(DatabaseFacade, CancellationToken)

Otevře základní DbConnectionobjekt .

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

Nastaví časový limit (v sekundách), který se má použít pro příkazy spouštěné s tímto DbContextpříkazem .

SetCommandTimeout(DatabaseFacade, TimeSpan)

Nastaví časový limit pro příkazy spuštěné s tímto DbContextpříkazem .

SetConnectionString(DatabaseFacade, String)

Nastaví základní připojovací řetězec nakonfigurované pro tento DbContextobjekt .

SetDbConnection(DatabaseFacade, DbConnection, Boolean)

Nastaví základní ADO.NET DbConnection pro tento DbContextobjekt .

SetDbConnection(DatabaseFacade, DbConnection)

Nastaví základní ADO.NET DbConnection pro tento DbContextobjekt .

SqlQuery<TResult>(DatabaseFacade, FormattableString)

Vytvoří dotaz LINQ na základě nezpracovaného dotazu SQL, který vrátí sadu výsledků skalárního typu nativně podporovaného poskytovatelem databáze.

SqlQueryRaw<TResult>(DatabaseFacade, String, Object[])

Vytvoří dotaz LINQ na základě nezpracovaného dotazu SQL, který vrátí sadu výsledků skalárního typu nativně podporovaného poskytovatelem databáze.

UseTransaction(DatabaseFacade, DbTransaction, Guid)

Nastaví pro DbTransaction použití databázovými operacemi na .DbContext

UseTransaction(DatabaseFacade, DbTransaction)

Nastaví pro DbTransaction použití databázovými operacemi na .DbContext

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

Nastaví pro DbTransaction použití databázovými operacemi na .DbContext

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

Nastaví pro DbTransaction použití databázovými operacemi na .DbContext

IsSqlite(DatabaseFacade)

Vrátí hodnotu true , pokud poskytovatel databáze, který se aktuálně používá, zprostředkovatelem SQLite.

IsSqlServer(DatabaseFacade)

Vrátí hodnotutrue, pokud je aktuálně zprostředkovatel databáze zprostředkovatelem SQL Server.

EnlistTransaction(DatabaseFacade, Transaction)

Určuje existující Transaction , který se má použít pro databázové operace.

GetEnlistedTransaction(DatabaseFacade)

Vrátí aktuálně zařazenou transakci.

Platí pro