Lingua

DatabaseFacade Classe

Definizione

Fornisce l'accesso alle informazioni e alle operazioni correlate al database per un contesto. Le istanze di questa classe vengono in genere ottenute da Database e non sono progettate per essere costruite direttamente nel codice dell'applicazione.

public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
[System.Runtime.CompilerServices.Nullable(0)]
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
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>
[<System.Runtime.CompilerServices.Nullable(0)>]
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
    interface IResettableService
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), IResettableService
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider)
Ereditarietà
DatabaseFacade
Attributi
Implementazioni
IInfrastructure<IServiceProvider> IResettableService IDatabaseFacadeDependenciesAccessor Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor

Costruttori

Nome Descrizione
DatabaseFacade(DbContext)

Inizializza una nuova istanza della classe DatabaseFacade. Le istanze di questa classe vengono in genere ottenute da Database e non sono progettate per essere costruite direttamente nel codice dell'applicazione.

Proprietà

Nome Descrizione
AutoSavepointsEnabled

Indica se un punto di salvataggio della transazione verrà creato automaticamente se SaveChanges() viene chiamato dopo l'avvio manuale di una transazione con BeginTransaction().

AutoTransactionBehavior

Ottiene o imposta un valore che indica se una transazione verrà creata automaticamente da SaveChanges() se non è stato chiamato 'BeginTransaction' né 'UseTransaction'.

AutoTransactionsEnabled
Obsoleti.
Obsoleti.

Ottiene o imposta un valore che indica se una transazione verrà creata automaticamente da SaveChanges() se non è stato chiamato nessuno dei metodi 'BeginTransaction' o 'UseTransaction'.

CurrentTransaction

Ottiene l'oggetto corrente IDbContextTransaction utilizzato dal contesto o Null se non è in uso alcuna transazione.

ProviderName

Restituisce il nome del provider di database attualmente in uso. Il nome è in genere il nome dell'assembly del provider. In genere è più facile usare un metodo di zucchero, ad Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer esempio anziché chiamare direttamente questo metodo.

Metodi

Nome Descrizione
BeginTransaction()

Avvia una nuova transazione.

BeginTransactionAsync(CancellationToken)

Avvia in modo asincrono una nuova transazione.

CanConnect()

Determina se il database è disponibile e può essere connesso.

CanConnectAsync(CancellationToken)

Determina se il database è disponibile e può essere connesso.

CommitTransaction()

Applica le operazioni in sospeso nella transazione corrente al database.

CommitTransactionAsync(CancellationToken)

Applica le operazioni in sospeso nella transazione corrente al database.

CreateExecutionStrategy()

Crea un'istanza dell'oggetto configurato IExecutionStrategy.

EnsureCreated()

Assicura che il database per il contesto esista.

EnsureCreatedAsync(CancellationToken)

Assicura che il database per il contesto esista.

EnsureDeleted()

Assicura che il database per il contesto non esista. Se non esiste, non viene eseguita alcuna azione. Se esiste, il database viene eliminato.

Avviso: l'intero database viene eliminato e non viene eseguito alcun tentativo di rimuovere solo gli oggetti di database utilizzati dal modello per questo contesto.

EnsureDeletedAsync(CancellationToken)

Garantisce in modo asincrono che il database per il contesto non esista. Se non esiste, non viene eseguita alcuna azione. Se esiste, il database viene eliminato.

Avviso: l'intero database viene eliminato e non viene eseguito alcun tentativo di rimuovere solo gli oggetti di database utilizzati dal modello per questo contesto.

RollbackTransaction()

Elimina le operazioni in sospeso nella transazione corrente.

RollbackTransactionAsync(CancellationToken)

Elimina le operazioni in sospeso nella transazione corrente.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDatabaseFacadeDependenciesAccessor.Context

Si tratta di un'API interna che supporta l'infrastruttura Entity Framework Core e non è soggetta agli stessi standard di compatibilità delle API pubbliche. Può essere modificato o rimosso senza preavviso in alcuna versione. È consigliabile usarlo direttamente nel codice con estrema cautela e sapere che questa operazione può causare errori dell'applicazione durante l'aggiornamento a una nuova versione Entity Framework Core.

IDatabaseFacadeDependenciesAccessor.Dependencies

Si tratta di un'API interna che supporta l'infrastruttura Entity Framework Core e non è soggetta agli stessi standard di compatibilità delle API pubbliche. Può essere modificato o rimosso senza preavviso in alcuna versione. È consigliabile usarlo direttamente nel codice con estrema cautela e sapere che questa operazione può causare errori dell'applicazione durante l'aggiornamento a una nuova versione Entity Framework Core.

IInfrastructure<IServiceProvider>.Instance

Ottiene l'ambito IServiceProvider utilizzato per risolvere i servizi.

Questa proprietà è destinata all'uso da parte di metodi di estensione che devono usare i servizi non esposti direttamente nella superficie api pubblica.

IResettableService.ResetState()

Reimposta il servizio in modo che possa essere usato dal pool.

IResettableService.ResetStateAsync(CancellationToken)

Fornisce l'accesso alle informazioni e alle operazioni correlate al database per un contesto. Le istanze di questa classe vengono in genere ottenute da Database e non sono progettate per essere costruite direttamente nel codice dell'applicazione.

Metodi di estensione

Nome Descrizione
AppendSessionToken(DatabaseFacade, String)

Aggiunge il token di sessione composito per il contenitore predefinito per questo DbContextoggetto .

AppendSessionTokens(DatabaseFacade, IReadOnlyDictionary<String,String>)

Aggiunge il token di sessioni composite per DbContext ogni contenitore con i token specificati in sessionTokens.

BeginTransaction(DatabaseFacade, IsolationLevel)

Avvia una nuova transazione con un determinato IsolationLeveloggetto .

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

Avvia in modo asincrono una nuova transazione con un determinato IsolationLeveloggetto .

CloseConnection(DatabaseFacade)

Chiude l'oggetto sottostante DbConnection.

CloseConnectionAsync(DatabaseFacade)

Chiude l'oggetto sottostante DbConnection.

EnlistTransaction(DatabaseFacade, Transaction)

Specifica un oggetto esistente Transaction da utilizzare per le operazioni di database.

ExecuteSql(DatabaseFacade, FormattableString)

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

ExecuteSqlAsync(DatabaseFacade, FormattableString, CancellationToken)

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

ExecuteSqlCommand(DatabaseFacade, FormattableString)
Obsoleti.

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction(DatabaseFacade, DbTransaction).

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo perché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. È possibile usare un oggetto ExecutionStrategy in modo esplicito, assicurandosi di usare anche una transazione se SQL non è idempotente.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. Tutti i valori dei parametri specificati verranno convertiti automaticamente in dbParameter - context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

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

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction(DatabaseFacade, DbTransaction).

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo perché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. È possibile usare un oggetto ExecutionStrategy in modo esplicito, assicurandosi di usare anche una transazione se SQL non è idempotente.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. Tutti i valori dei parametri specificati verranno convertiti automaticamente in dbParameter. È anche possibile prendere in considerazione l'uso di ExecuteSqlInterpolated per usare la sintassi di stringa interpolata per creare parametri.

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

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction(DatabaseFacade, DbTransaction).

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo perché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. È possibile usare un oggetto ExecutionStrategy in modo esplicito, assicurandosi di usare anche una transazione se SQL non è idempotente.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. Tutti i valori dei parametri specificati verranno convertiti automaticamente in dbParameter - context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). È anche possibile prendere in considerazione l'uso di ExecuteSqlInterpolated per usare la sintassi di stringa interpolata per creare parametri.

ExecuteSqlCommand(DatabaseFacade, String, Object[])

Fornisce l'accesso alle informazioni e alle operazioni correlate al database per un contesto. Le istanze di questa classe vengono in genere ottenute da Database e non sono progettate per essere costruite direttamente nel codice dell'applicazione.

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
Obsoleti.

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction(DatabaseFacade, DbTransaction).

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo perché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. È possibile usare un oggetto ExecutionStrategy in modo esplicito, assicurandosi di usare anche una transazione se SQL non è idempotente.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. Tutti i valori dei parametri specificati verranno convertiti automaticamente in dbParameter - context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
Obsoleti.

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction(DatabaseFacade, DbTransaction).

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo perché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. È possibile usare un oggetto ExecutionStrategy in modo esplicito, assicurandosi di usare anche una transazione se SQL non è idempotente.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. Tutti i valori dei parametri specificati verranno convertiti automaticamente in dbParameter - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

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

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction(DatabaseFacade, DbTransaction).

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo perché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. È possibile usare un oggetto ExecutionStrategy in modo esplicito, assicurandosi di usare anche una transazione se SQL non è idempotente.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. Tutti i valori dei parametri specificati verranno convertiti automaticamente in dbParameter. È anche possibile prendere in considerazione l'uso di ExecuteSqlInterpolated per usare la sintassi di stringa interpolata per creare parametri.

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

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction(DatabaseFacade, DbTransaction).

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo perché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. È possibile usare un oggetto ExecutionStrategy in modo esplicito, assicurandosi di usare anche una transazione se SQL non è idempotente.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. Tutti i valori dei parametri specificati verranno convertiti automaticamente in dbParameter - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). È anche possibile prendere in considerazione l'uso di ExecuteSqlInterpolated per usare la sintassi di stringa interpolata per creare parametri.

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

Fornisce l'accesso alle informazioni e alle operazioni correlate al database per un contesto. Le istanze di questa classe vengono in genere ottenute da Database e non sono progettate per essere costruite direttamente nel codice dell'applicazione.

ExecuteSqlInterpolated(DatabaseFacade, FormattableString)
Obsoleti.

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)
Obsoleti.

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

ExecuteSqlRaw(DatabaseFacade, String, Object[])

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

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

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

Esegue il codice SQL specificato sul database e restituisce il numero di righe interessate.

GenerateCreateScript(DatabaseFacade)

Genera uno script per creare tutte le tabelle per il modello corrente.

GetAppliedMigrations(DatabaseFacade)

Ottiene tutte le migrazioni applicate al database di destinazione.

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

Ottiene in modo asincrono tutte le migrazioni applicate al database di destinazione.

GetCommandTimeout(DatabaseFacade)

Restituisce il timeout impostato in secondi per i comandi eseguiti con questo DbContextoggetto .

GetConnectionString(DatabaseFacade)

Ottiene la stringa di connessione sottostante configurata per l'oggetto DbContext.

GetCosmosClient(DatabaseFacade)

Ottiene l'oggetto sottostante CosmosClient per l'oggetto DbContext.

GetCosmosDatabaseId(DatabaseFacade)

Ottiene il nome del database configurato per l'oggetto DbContext.

GetDbConnection(DatabaseFacade)

Ottiene l'oggetto ADO sottostante.NET DbConnection per questo DbContextoggetto .

GetEnlistedTransaction(DatabaseFacade)

Restituisce la transazione attualmente inclusa.

GetInfrastructure<T>(IInfrastructure<T>)

Ottiene il valore da una proprietà nascosta utilizzando IInfrastructure<T>.

Questo metodo viene in genere usato dai provider di database (e altre estensioni). In genere non viene usato nel codice dell'applicazione.

GetMigrations(DatabaseFacade)

Ottiene tutte le migrazioni definite nell'assembly delle migrazioni configurate.

GetPendingMigrations(DatabaseFacade)

Ottiene tutte le migrazioni definite nell'assembly ma non sono state applicate al database di destinazione.

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

Ottiene in modo asincrono tutte le migrazioni definite nell'assembly, ma non sono state applicate al database di destinazione.

GetSessionToken(DatabaseFacade)

Ottiene il token di sessione composito per il contenitore predefinito per questo DbContextoggetto .

GetSessionTokens(DatabaseFacade)

Ottiene un dizionario che contiene il token di sessione composito per ogni contenitore per questo DbContextoggetto .

HasPendingModelChanges(DatabaseFacade)

Restituisce true se il modello presenta modifiche in sospeso da applicare.

IsCosmos(DatabaseFacade)

Restituisce true se il provider di database attualmente in uso è il provider Cosmos.

IsInMemory(DatabaseFacade)

Restituisce true se il provider di database attualmente in uso è il provider in memoria.

IsRelational(DatabaseFacade)

Restituisce true se il provider di database attualmente in uso è un database relazionale.

IsSqlite(DatabaseFacade)

Restituisce true se il provider di database attualmente in uso è il provider SQLite.

IsSqlServer(DatabaseFacade)

Restituisce true se il provider di database attualmente in uso è il provider di SQL Server.

Migrate(DatabaseFacade, String)

Applica le migrazioni per il contesto al database. Se non esiste già, verrà creato il database.

Migrate(DatabaseFacade)

Applica eventuali migrazioni in sospeso per il contesto al database. Se non esiste già, verrà creato il database.

MigrateAsync(DatabaseFacade, CancellationToken)

Applica in modo asincrono tutte le migrazioni in sospeso per il contesto al database. Se non esiste già, verrà creato il database.

MigrateAsync(DatabaseFacade, String, CancellationToken)

Applica in modo asincrono le migrazioni per il contesto al database. Se non esiste già, verrà creato il database.

OpenConnection(DatabaseFacade)

Apre l'oggetto sottostante DbConnection.

OpenConnectionAsync(DatabaseFacade, CancellationToken)

Apre l'oggetto sottostante DbConnection.

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

Imposta il timeout (in secondi) da usare per i comandi eseguiti con questo DbContextoggetto .

SetCommandTimeout(DatabaseFacade, TimeSpan)

Imposta il timeout da utilizzare per i comandi eseguiti con questo DbContextoggetto .

SetConnectionString(DatabaseFacade, String)

Imposta il stringa di connessione sottostante configurato per questo DbContextoggetto .

SetDbConnection(DatabaseFacade, DbConnection, Boolean)

Imposta l'oggetto ADO sottostante.NET DbConnection per questo DbContextoggetto .

SetDbConnection(DatabaseFacade, DbConnection)

Imposta l'oggetto ADO sottostante.NET DbConnection per questo DbContextoggetto .

SqlQuery<TResult>(DatabaseFacade, FormattableString)

Crea una query LINQ basata su una query SQL non elaborata, che restituisce un set di risultati di un tipo scalare supportato in modo nativo dal provider di database.

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

Crea una query LINQ basata su una query SQL non elaborata, che restituisce un set di risultati di un tipo scalare supportato in modo nativo dal provider di database.

UseSessionToken(DatabaseFacade, String)

Imposta il token di sessione composito per il contenitore predefinito per questo DbContextoggetto .

UseSessionTokens(DatabaseFacade, IReadOnlyDictionary<String,String>)

Imposta il token di sessioni composite per DbContext ogni contenitore con i token specificati in sessionTokens.

UseTransaction(DatabaseFacade, DbTransaction, Guid)

Imposta l'oggetto DbTransaction da utilizzare dalle operazioni di database in DbContext.

UseTransaction(DatabaseFacade, DbTransaction)

Imposta l'oggetto DbTransaction da utilizzare dalle operazioni di database in DbContext.

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

Imposta l'oggetto DbTransaction da utilizzare dalle operazioni di database in DbContext.

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

Imposta l'oggetto DbTransaction da utilizzare dalle operazioni di database in DbContext.

Si applica a