Partilhar via


DatabaseFacade Classe

Definição

Fornece acesso a informações e operações relacionadas ao banco de dados para um contexto. Normalmente, as instâncias dessa classe são obtidas de Database e ela não foi projetada para ser construída diretamente no código do aplicativo.

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
Herança
DatabaseFacade
Implementações
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor IDatabaseFacadeDependenciesAccessor IResettableService

Construtores

DatabaseFacade(DbContext)

Inicializa uma nova instância da classe DatabaseFacade. As instâncias dessa classe normalmente são obtidas de Database e ela não foi projetada para ser construída diretamente no código do aplicativo.

Propriedades

AutoSavepointsEnabled

Se um ponto de salvamento de transação será criado automaticamente por SaveChanges() se for chamado depois que uma transação tiver sido iniciada manualmente com BeginTransaction().

AutoTransactionBehavior

Obtém ou define um valor que indica se uma transação será criada automaticamente SaveChanges() se nem 'BeginTransaction' nem 'UseTransaction' tiverem sido chamados.

AutoTransactionsEnabled
Obsoleto.
Obsoleto.

Obtém ou define um valor que indica se uma transação será criada automaticamente se SaveChanges() nenhum dos métodos 'BeginTransaction' ou 'UseTransaction' tiver sido chamado.

CurrentTransaction

Obtém o atual IDbContextTransaction que está sendo usado pelo contexto ou nulo se nenhuma transação estiver em uso.

ProviderName

Retorna o nome do provedor de banco de dados atualmente em uso. O nome normalmente é o nome do assembly do provedor. Geralmente, é mais fácil usar um método de açúcar, como Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer em vez de chamar esse método diretamente.

Métodos

BeginTransaction()

Inicia uma nova transação.

BeginTransactionAsync(CancellationToken)

Inicia de forma assíncrona uma nova transação.

CanConnect()

Determina se o banco de dados está disponível ou não e pode ser conectado.

CanConnectAsync(CancellationToken)

Determina se o banco de dados está disponível ou não e pode ser conectado.

CommitTransaction()

Aplica as operações pendentes na transação atual ao banco de dados.

CommitTransactionAsync(CancellationToken)

Aplica as operações pendentes na transação atual ao banco de dados.

CreateExecutionStrategy()

Cria uma instância do configurado IExecutionStrategy.

EnsureCreated()

Garante que o banco de dados para o contexto exista.

EnsureCreatedAsync(CancellationToken)

Garante que o banco de dados para o contexto exista.

EnsureDeleted()

Garante que o banco de dados para o contexto não exista. Se ele não existir, nenhuma ação será tomada. Se ele existir, o banco de dados será excluído.

Aviso: todo o banco de dados é excluído e nenhum esforço é feito para remover apenas os objetos de banco de dados usados pelo modelo para esse contexto.

EnsureDeletedAsync(CancellationToken)

Garante de forma assíncrona que o banco de dados para o contexto não exista. Se ele não existir, nenhuma ação será tomada. Se ele existir, o banco de dados será excluído.

Aviso: todo o banco de dados é excluído e nenhum esforço é feito para remover apenas os objetos de banco de dados usados pelo modelo para esse contexto.

RollbackTransaction()

Descarta as operações pendentes na transação atual.

RollbackTransactionAsync(CancellationToken)

Descarta as operações pendentes na transação atual.

Implantações explícitas de interface

IDatabaseFacadeDependenciesAccessor.Context

Essa é uma API interna que dá suporte à infraestrutura do Entity Framework Core e não está sujeita aos mesmos padrões de compatibilidade que as APIs públicas. Ele pode ser alterado ou removido sem aviso prévio em qualquer versão. Você só deve usá-lo diretamente em seu código com extrema cautela e saber que fazer isso pode resultar em falhas de aplicativo ao atualizar para uma nova versão do Entity Framework Core.

IDatabaseFacadeDependenciesAccessor.Dependencies

Essa é uma API interna que dá suporte à infraestrutura do Entity Framework Core e não está sujeita aos mesmos padrões de compatibilidade que as APIs públicas. Ele pode ser alterado ou removido sem aviso prévio em qualquer versão. Você só deve usá-lo diretamente em seu código com extrema cautela e saber que fazer isso pode resultar em falhas de aplicativo ao atualizar para uma nova versão do Entity Framework Core.

IInfrastructure<IServiceProvider>.Instance

Obtém o escopo IServiceProvider que está sendo usado para resolve serviços.

Essa propriedade destina-se ao uso por métodos de extensão que precisam fazer uso de serviços não expostos diretamente na superfície da API pública.

IResettableService.ResetState()

Redefine o serviço para que ele possa ser usado no pool.

IResettableService.ResetStateAsync(CancellationToken)

Fornece acesso a informações e operações relacionadas ao banco de dados para um contexto. Normalmente, as instâncias dessa classe são obtidas de Database e ela não foi projetada para ser construída diretamente no código do aplicativo.

Métodos de Extensão

GetCosmosClient(DatabaseFacade)

Obtém o subjacente CosmosClient para este DbContext.

GetCosmosDatabaseId(DatabaseFacade)

Obtém o nome do banco de dados configurado para este DbContext.

IsCosmos(DatabaseFacade)

Retorna true se o provedor de banco de dados atualmente em uso é o provedor do Cosmos.

GetInfrastructure<T>(IInfrastructure<T>)

Obtém o valor de uma propriedade que está sendo ocultada usando IInfrastructure<T>.

Esse método normalmente é usado por provedores de banco de dados (e outras extensões). Geralmente, ele não é usado no código do aplicativo.

IsInMemory(DatabaseFacade)

Retorna true se o provedor de banco de dados atualmente em uso é o provedor na memória.

BeginTransaction(DatabaseFacade, IsolationLevel)

Inicia uma nova transação com um determinado IsolationLevel.

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

Inicia de forma assíncrona uma nova transação com um determinado IsolationLevel.

CloseConnection(DatabaseFacade)

Fecha o subjacente DbConnection.

CloseConnectionAsync(DatabaseFacade)

Fecha o subjacente DbConnection.

ExecuteSql(DatabaseFacade, FormattableString)

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

ExecuteSqlAsync(DatabaseFacade, FormattableString, CancellationToken)

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, IEnumerable<Object>)
Obsoleto.

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction).

Observe que o atual ExecutionStrategy não é usado por esse método, pois o SQL pode não ser idempotente e não é executado em uma transação. Um ExecutionStrategy pode ser usado explicitamente, certificando-se de também usar uma transação se o SQL não for idempotente.

Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada do usuário para proteger contra um ataque de injeção de SQL. Você pode incluir os espaços reservados para parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter. Você também pode considerar o uso de ExecuteSqlInterpolated para usar a sintaxe de cadeia de caracteres interpolada para criar parâmetros.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, Object[])
Obsoleto.

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction).

Observe que o atual ExecutionStrategy não é usado por esse método, pois o SQL pode não ser idempotente e não é executado em uma transação. Um ExecutionStrategy pode ser usado explicitamente, certificando-se de também usar uma transação se o SQL não for idempotente.

Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada do usuário para proteger contra um ataque de injeção de SQL. Você pode incluir os espaços reservados para parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter – context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Você também pode considerar o uso de ExecuteSqlInterpolated para usar a sintaxe de cadeia de caracteres interpolada para criar parâmetros.

ExecuteSqlCommand(DatabaseFacade, FormattableString)
Obsoleto.

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction).

Observe que o atual ExecutionStrategy não é usado por esse método, pois o SQL pode não ser idempotente e não é executado em uma transação. Um ExecutionStrategy pode ser usado explicitamente, certificando-se de também usar uma transação se o SQL não for idempotente.

Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada do usuário para proteger contra um ataque de injeção de SQL. Você pode incluir os espaços reservados para parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter – context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommand(DatabaseFacade, String, Object[])

Fornece acesso a informações e operações relacionadas ao banco de dados para um contexto. Normalmente, as instâncias dessa classe são obtidas de Database e ela não foi projetada para ser construída diretamente no código do aplicativo.

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

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction).

Observe que o atual ExecutionStrategy não é usado por esse método, pois o SQL pode não ser idempotente e não é executado em uma transação. Um ExecutionStrategy pode ser usado explicitamente, certificando-se de também usar uma transação se o SQL não for idempotente.

Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada do usuário para proteger contra um ataque de injeção de SQL. Você pode incluir os espaços reservados para parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter. Você também pode considerar o uso de ExecuteSqlInterpolated para usar a sintaxe de cadeia de caracteres interpolada para criar parâmetros.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, Object[])
Obsoleto.

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction).

Observe que o atual ExecutionStrategy não é usado por esse método, pois o SQL pode não ser idempotente e não é executado em uma transação. Um ExecutionStrategy pode ser usado explicitamente, certificando-se de também usar uma transação se o SQL não for idempotente.

Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada do usuário para proteger contra um ataque de injeção de SQL. Você pode incluir os espaços reservados para parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter – context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Você também pode considerar o uso de ExecuteSqlInterpolated para usar a sintaxe de cadeia de caracteres interpolada para criar parâmetros.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
Obsoleto.

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction).

Observe que o atual ExecutionStrategy não é usado por esse método, pois o SQL pode não ser idempotente e não é executado em uma transação. Um ExecutionStrategy pode ser usado explicitamente, certificando-se de também usar uma transação se o SQL não for idempotente.

Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada de usuário para proteger contra um ataque de injeção de SQL. Você pode incluir detentores de parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter – context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
Obsoleto.

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction).

Observe que o atual ExecutionStrategy não é usado por esse método, pois o SQL pode não ser idempotente e não é executado em uma transação. Um ExecutionStrategy pode ser usado explicitamente, certificando-se de também usar uma transação se o SQL não for idempotente.

Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada de usuário para proteger contra um ataque de injeção de SQL. Você pode incluir detentores de parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter – context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

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

Fornece acesso a informações e operações relacionadas ao banco de dados para um contexto. Normalmente, as instâncias dessa classe são obtidas de Database e ela não foi projetada para ser construída diretamente no código do aplicativo.

ExecuteSqlInterpolated(DatabaseFacade, FormattableString)

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

ExecuteSqlRaw(DatabaseFacade, String, Object[])

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

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

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

Executa o SQL especificado no banco de dados e retorna o número de linhas afetadas.

GenerateCreateScript(DatabaseFacade)

Gera um script para criar todas as tabelas para o modelo atual.

GetAppliedMigrations(DatabaseFacade)

Obtém todas as migrações que foram aplicadas ao banco de dados de destino.

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

Obtém de forma assíncrona todas as migrações que foram aplicadas ao banco de dados de destino.

GetCommandTimeout(DatabaseFacade)

Retorna o tempo limite (em segundos) definido para comandos executados com este DbContext.

GetConnectionString(DatabaseFacade)

Obtém o cadeia de conexão subjacente configurado para este DbContext.

GetDbConnection(DatabaseFacade)

Obtém o ADO.NET DbConnection subjacente para este DbContext.

GetMigrations(DatabaseFacade)

Obtém todas as migrações definidas no assembly de migrações configurado.

GetPendingMigrations(DatabaseFacade)

Obtém todas as migrações definidas no assembly, mas que não foram aplicadas ao banco de dados de destino.

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

Obtém de forma assíncrona todas as migrações definidas no assembly, mas que não foram aplicadas ao banco de dados de destino.

HasPendingModelChanges(DatabaseFacade)

Retornará true se o modelo tiver alterações pendentes a serem aplicadas.

IsRelational(DatabaseFacade)

Retornará true se o provedor de banco de dados atualmente em uso for um banco de dados relacional.

Migrate(DatabaseFacade)

Aplica todas as migrações pendentes para o contexto para o banco de dados. Criará o banco de dados se ele ainda não existir.

MigrateAsync(DatabaseFacade, CancellationToken)

Aplica de forma assíncrona todas as migrações pendentes para o contexto para o banco de dados. Criará o banco de dados se ele ainda não existir.

OpenConnection(DatabaseFacade)

Abre o subjacente DbConnection.

OpenConnectionAsync(DatabaseFacade, CancellationToken)

Abre o subjacente DbConnection.

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

Define o tempo limite (em segundos) a ser usado para comandos executados com este DbContext.

SetCommandTimeout(DatabaseFacade, TimeSpan)

Define o tempo limite a ser usado para comandos executados com este DbContext.

SetConnectionString(DatabaseFacade, String)

Define o cadeia de conexão subjacente configurado para este DbContext.

SetDbConnection(DatabaseFacade, DbConnection, Boolean)

Define o ADO.NET DbConnection subjacente para este DbContext.

SetDbConnection(DatabaseFacade, DbConnection)

Define o ADO.NET DbConnection subjacente para este DbContext.

SqlQuery<TResult>(DatabaseFacade, FormattableString)

Cria uma consulta LINQ com base em uma consulta SQL bruta, que retorna um conjunto de resultados de um tipo escalar com suporte nativo pelo provedor de banco de dados.

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

Cria uma consulta LINQ com base em uma consulta SQL bruta, que retorna um conjunto de resultados de um tipo escalar com suporte nativo pelo provedor de banco de dados.

UseTransaction(DatabaseFacade, DbTransaction, Guid)

Define o DbTransaction a ser usado por operações de banco de dados no DbContext.

UseTransaction(DatabaseFacade, DbTransaction)

Define o DbTransaction a ser usado por operações de banco de dados no DbContext.

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

Define o DbTransaction a ser usado por operações de banco de dados no DbContext.

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

Define o DbTransaction a ser usado por operações de banco de dados no DbContext.

IsSqlite(DatabaseFacade)

Retornará true se o provedor de banco de dados atualmente em uso for o provedor SQLite.

IsSqlServer(DatabaseFacade)

Retornará true se o provedor de banco de dados atualmente em uso for o provedor de SQL Server.

EnlistTransaction(DatabaseFacade, Transaction)

Especifica um existente Transaction a ser usado para operações de banco de dados.

GetEnlistedTransaction(DatabaseFacade)

Retorna a transação inscrita no momento.

Aplica-se a