Condividi tramite


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 create direttamente nel codice dell'applicazione.

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
Ereditarietà
DatabaseFacade
Implementazioni
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor IDatabaseFacadeDependenciesAccessor IResettableService

Costruttori

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à

AutoSavepointsEnabled

Se un punto di salvataggio delle transazioni verrà creato automaticamente se SaveChanges() viene chiamato dopo che una transazione è stata avviata manualmente con BeginTransaction().

AutoTransactionBehavior

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

AutoTransactionsEnabled
Obsoleti.
Obsoleti.

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

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, Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer ad esempio anziché chiamare direttamente questo metodo.

Metodi

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 IExecutionStrategydi .

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 effettuato alcun sforzo per rimuovere solo gli oggetti di database usati dal modello per questo contesto.

EnsureDeletedAsync(CancellationToken)

Assicura 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 effettuato alcun sforzo per rimuovere solo gli oggetti di database usati 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

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 nessuna versione. È consigliabile usarlo direttamente nel codice con attenzione estrema e sapere che ciò può causare errori dell'applicazione durante l'aggiornamento a una nuova versione di 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 nessuna versione. È consigliabile usarlo direttamente nel codice con attenzione estrema e sapere che ciò può causare errori dell'applicazione durante l'aggiornamento a una nuova versione di Entity Framework Core.

IInfrastructure<IServiceProvider>.Instance

Ottiene l'ambito IServiceProvider usato per risolvere i servizi.

Questa proprietà è destinata all'uso da parte dei metodi di estensione che devono usare i servizi non esposti direttamente nell'area 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 create direttamente nel codice dell'applicazione.

Metodi di estensione

GetCosmosClient(DatabaseFacade)

Ottiene il sottostante CosmosClient per questo DbContextoggetto .

GetCosmosDatabaseId(DatabaseFacade)

Ottiene il nome del database configurato per questo DbContextoggetto .

IsCosmos(DatabaseFacade)

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

GetInfrastructure<T>(IInfrastructure<T>)

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

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

IsInMemory(DatabaseFacade)

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

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.

ExecuteSql(DatabaseFacade, FormattableString)

Esegue il valore SQL specificato nel database e restituisce il numero di righe interessate.

ExecuteSqlAsync(DatabaseFacade, FormattableString, CancellationToken)

Esegue il valore SQL specificato nel database e restituisce il numero di righe interessate.

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

Esegue il valore SQL specificato nel database e restituisce il numero di righe interessate.

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

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo poiché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. Un'istanza di ExecutionStrategy può essere usata 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 forniti verranno convertiti automaticamente in dbParameter. È anche possibile usare ExecuteSqlInterpolated per usare la sintassi stringa interpolata per creare parametri.

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

Esegue il valore SQL specificato nel database e restituisce il numero di righe interessate.

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

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo poiché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. Un'istanza di ExecutionStrategy può essere usata 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 forniti verranno convertiti automaticamente in un oggetto DbParameter - context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). È anche possibile usare ExecuteSqlInterpolated per usare la sintassi stringa interpolata per creare parametri.

ExecuteSqlCommand(DatabaseFacade, FormattableString)
Obsoleti.

Esegue il valore SQL specificato nel database e restituisce il numero di righe interessate.

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

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo poiché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. Un'istanza di ExecutionStrategy può essere usata 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 forniti verranno convertiti automaticamente in un oggetto DbParameter - context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

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 create direttamente nel codice dell'applicazione.

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

Esegue il valore SQL specificato nel database e restituisce il numero di righe interessate.

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

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo poiché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. Un'istanza di ExecutionStrategy può essere usata 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 forniti verranno convertiti automaticamente in dbParameter. È anche possibile usare ExecuteSqlInterpolated per usare la sintassi stringa interpolata per creare parametri.

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

Esegue il valore SQL specificato nel database e restituisce il numero di righe interessate.

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

Si noti che l'oggetto corrente ExecutionStrategy non viene usato da questo metodo poiché SQL potrebbe non essere idempotente e non viene eseguito in una transazione. Un'istanza di ExecutionStrategy può essere usata 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 forniti verranno convertiti automaticamente in un oggetto DbParameter - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). È anche possibile usare ExecuteSqlInterpolated per usare la sintassi stringa interpolata per creare parametri.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
Obsoleti.

Esegue il valore SQL specificato nel 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 dell'utente per proteggersi 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, 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 dell'utente per proteggersi 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, 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 create direttamente nel codice dell'applicazione.

ExecuteSqlInterpolated(DatabaseFacade, FormattableString)

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

ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)

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, 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.

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

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 il stringa di connessione sottostante configurato per l'oggetto DbContext.

GetDbConnection(DatabaseFacade)

Ottiene il ADO.NET DbConnection sottostante per l'oggetto DbContext.

GetMigrations(DatabaseFacade)

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

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.

HasPendingModelChanges(DatabaseFacade)

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

IsRelational(DatabaseFacade)

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

Migrate(DatabaseFacade)

Applica tutte le migrazioni in sospeso per il contesto al database. Crea il database se non esiste già.

MigrateAsync(DatabaseFacade, CancellationToken)

Applica in modo asincrono tutte le migrazioni in sospeso per il contesto al database. Crea il database se non esiste già.

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 usare per i comandi eseguiti con questo DbContextoggetto .

SetConnectionString(DatabaseFacade, String)

Imposta la stringa di connessione sottostante configurata per questo DbContextoggetto .

SetDbConnection(DatabaseFacade, DbConnection, Boolean)

Imposta il ADO.NET DbConnection sottostante per questo DbContextoggetto .

SetDbConnection(DatabaseFacade, DbConnection)

Imposta il ADO.NET DbConnection sottostante 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.

UseTransaction(DatabaseFacade, DbTransaction, Guid)

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

UseTransaction(DatabaseFacade, DbTransaction)

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

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

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

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

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

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 SQL Server.

EnlistTransaction(DatabaseFacade, Transaction)

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

GetEnlistedTransaction(DatabaseFacade)

Restituisce la transazione attualmente inserita.

Si applica a