DatabaseFacade Classe

Définition

Fournit l’accès aux informations et aux opérations liées à la base de données pour un contexte. Les instances de cette classe sont généralement obtenues à partir de Database et ne sont pas conçues pour être construites directement dans le code de votre application.

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
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
Public Class DatabaseFacade
Implements IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider)
Héritage
DatabaseFacade
Implémente
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor IDatabaseFacadeDependenciesAccessor

Constructeurs

DatabaseFacade(DbContext)

Initialise une nouvelle instance de la classe DatabaseFacade. Les instances de cette classe sont généralement obtenues à partir de Database et ne sont pas conçues pour être construites directement dans le code de votre application.

Propriétés

AutoTransactionsEnabled

Obtient ou définit une valeur indiquant si une transaction est créée automatiquement par SaveChanges() si aucune des méthodes’BeginTransaction’ou’UseTransaction’n’a été appelée.

Si vous affectez la valeur false, vous désactivez également le IExecutionStrategy pour SaveChanges()

La valeur par défaut est true, ce qui signifie que SaveChanges utilisera toujours une transaction lors de l’enregistrement des modifications.

La définition de cette valeur sur false doit être effectuée avec précaution, car la base de données peut être laissée dans un état endommagé si SaveChanges échoue.

CurrentTransaction

Obtient le actuel IDbContextTransaction utilisé par le contexte, ou null si aucune transaction n’est en cours d’utilisation.

Cette propriété a la valeur null, sauf si l’une des méthodes « BeginTransaction » ou « UseTransaction » a été appelée, certaines d’entre elles sont disponibles en tant que méthodes d’extension installées par les fournisseurs EF. Aucune tentative n’est effectuée pour obtenir une transaction à partir du DbConnection actuel ou similaire.

Pour les bases de données relationnelles, le DbTransaction sous-jacent peut être obtenu à l’aide de la méthode d’extension « Microsoft. EntityFrameworkCore. Storage. GetDbTransaction » sur le retourné IDbContextTransaction .

ProviderName

Retourne le nom du fournisseur de base de données en cours d’utilisation. Le nom est généralement le nom de l’assembly du fournisseur. Il est généralement plus facile d’utiliser une méthode de sucre telle que « IsSqlServer () » au lieu d’appeler directement cette méthode.

Cette méthode ne peut être utilisée qu’une fois que DbContext a été configuré, car il s’agit uniquement du fournisseur connu. Cela signifie que cette méthode ne peut pas être utilisée dans OnConfiguring(DbContextOptionsBuilder) , car il s’agit de l’emplacement où le code d’application définit le fournisseur à utiliser dans le cadre de la configuration du contexte.

Méthodes

BeginTransaction()

Démarre une nouvelle transaction.

BeginTransactionAsync(CancellationToken)

Démarre de façon asynchrone une nouvelle transaction.

CanConnect()

Détermine si la base de données est disponible et peut être connectée à.

Toutes les exceptions levées lors de la tentative de connexion sont interceptées et ne sont pas propagées à l’application.

La chaîne de connexion configurée est utilisée pour créer la connexion de façon normale, donc toutes les options configurées telles que les délais d’attente sont honorées.

Notez que la possibilité de se connecter à la base de données ne signifie pas qu’elle est à jour en ce qui concerne la création du schéma, etc.

CanConnectAsync(CancellationToken)

Détermine si la base de données est disponible et peut être connectée à.

Toutes les exceptions levées lors de la tentative de connexion sont interceptées et ne sont pas propagées à l’application.

La chaîne de connexion configurée est utilisée pour créer la connexion de façon normale, donc toutes les options configurées telles que les délais d’attente sont honorées.

Notez que la possibilité de se connecter à la base de données ne signifie pas qu’elle est à jour en ce qui concerne la création du schéma, etc.

CommitTransaction()

Applique les opérations en attente dans la transaction actuelle à la base de données.

CommitTransactionAsync(CancellationToken)

Applique les opérations en attente dans la transaction actuelle à la base de données.

CreateExecutionStrategy()

Crée une instance du configuré IExecutionStrategy .

EnsureCreated()

Garantit que la base de données du contexte existe. Si elle existe, aucune action n’est effectuée. S’il n’existe pas, la base de données et tout son schéma sont créés. Si la base de données existe, aucun effort n’est apporté pour s’assurer qu’elle est compatible avec le modèle pour ce contexte.

Notez que cette API n’utilise pas de migrations pour créer la base de données. En outre, la base de données créée ne peut pas être mise à jour ultérieurement à l’aide de migrations. Si vous ciblez une base de données relationnelle et que vous utilisez des migrations, vous pouvez utiliser la méthode DbContext. Database. Migrate () pour vous assurer que la base de données est créée et que toutes les migrations sont appliquées.

EnsureCreatedAsync(CancellationToken)

Vérifie de façon asynchrone que la base de données du contexte existe. Si elle existe, aucune action n’est effectuée. S’il n’existe pas, la base de données et tout son schéma sont créés. Si la base de données existe, aucun effort n’est apporté pour s’assurer qu’elle est compatible avec le modèle pour ce contexte.

Notez que cette API n’utilise pas de migrations pour créer la base de données. En outre, la base de données créée ne peut pas être mise à jour ultérieurement à l’aide de migrations. Si vous ciblez une base de données relationnelle et que vous utilisez des migrations, vous pouvez utiliser la méthode DbContext. Database. Migrate () pour vous assurer que la base de données est créée et que toutes les migrations sont appliquées.

EnsureDeleted()

Garantit que la base de données pour le contexte n’existe pas. S’il n’existe pas, aucune action n’est effectuée. S’il existe, la base de données est supprimée.

AVERTISSEMENT : la totalité de la base de données est supprimée et aucun effort n’est apporté pour supprimer uniquement les objets de base de données utilisés par le modèle pour ce contexte.

EnsureDeletedAsync(CancellationToken)

Vérifie de façon asynchrone que la base de données pour le contexte n’existe pas. S’il n’existe pas, aucune action n’est effectuée. S’il existe, la base de données est supprimée.

AVERTISSEMENT : la totalité de la base de données est supprimée et aucun effort n’est apporté pour supprimer uniquement les objets de base de données utilisés par le modèle pour ce contexte.

RollbackTransaction()

Ignore les opérations en suspens dans la transaction en cours.

RollbackTransactionAsync(CancellationToken)

Applique les opérations en attente dans la transaction actuelle à la base de données.

Implémentations d’interfaces explicites

IDatabaseFacadeDependenciesAccessor.Context

Il s’agit d’une API interne qui prend en charge l’infrastructure Entity Framework Core et qui n’est pas soumise aux mêmes normes de compatibilité que les API publiques. Elle peut être modifiée ou supprimée sans préavis dans aucune version. Vous ne devez l’utiliser directement dans votre code qu’avec une extrême prudence et savoir que cela peut entraîner des échecs d’application lors de la mise à jour vers une nouvelle version de Entity Framework Core.

IDatabaseFacadeDependenciesAccessor.Dependencies

Il s’agit d’une API interne qui prend en charge l’infrastructure Entity Framework Core et qui n’est pas soumise aux mêmes normes de compatibilité que les API publiques. Elle peut être modifiée ou supprimée sans préavis dans aucune version. Vous ne devez l’utiliser directement dans votre code qu’avec une extrême prudence et savoir que cela peut entraîner des échecs d’application lors de la mise à jour vers une nouvelle version de Entity Framework Core.

IInfrastructure<IServiceProvider>.Instance

Obtient le étendu IServiceProvider utilisé pour résoudre les services.

Cette propriété est destinée à être utilisée par les méthodes d’extension qui doivent utiliser des services qui ne sont pas directement exposés dans la surface de l’API publique.

Méthodes d’extension

GetCosmosClient(DatabaseFacade)

Obtient le sous-jacent CosmosClient de ce DbContext .

IsCosmos(DatabaseFacade)

Retourne true si le fournisseur de base de données en cours d’utilisation est le fournisseur Cosmos.

Cette méthode ne peut être utilisée qu’une fois que DbContext a été configuré, car il s’agit uniquement du fournisseur connu. Cela signifie que cette méthode ne peut pas être utilisée dans OnConfiguring(DbContextOptionsBuilder) , car il s’agit de l’emplacement où le code d’application définit le fournisseur à utiliser dans le cadre de la configuration du contexte.

GetInfrastructure<T>(IInfrastructure<T>)

Obtient la valeur d’une propriété qui est masquée à l’aide de IInfrastructure<T> .

Cette méthode est généralement utilisée par les fournisseurs de base de données (et d’autres extensions). Il n’est généralement pas utilisé dans le code de l’application.

IInfrastructure<T> est utilisé pour masquer les propriétés qui ne sont pas destinées à être utilisées dans le code de l’application, mais qui peuvent être utilisées dans les méthodes d’extension écrites par les fournisseurs de base de données, etc.

IsInMemory(DatabaseFacade)

Retourne true si le fournisseur de base de données en cours d’utilisation est le fournisseur en mémoire.

Cette méthode ne peut être utilisée qu’une fois que DbContext a été configuré, car il s’agit uniquement du fournisseur connu. Cela signifie que cette méthode ne peut pas être utilisée dans OnConfiguring(DbContextOptionsBuilder) , car il s’agit de l’emplacement où le code d’application définit le fournisseur à utiliser dans le cadre de la configuration du contexte.

BeginTransaction(DatabaseFacade, IsolationLevel)

Démarre une nouvelle transaction avec un donné IsolationLevel .

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

Démarre de façon asynchrone une nouvelle transaction avec un donné IsolationLevel .

CloseConnection(DatabaseFacade)

Ferme le sous-jacent DbConnection .

CloseConnectionAsync(DatabaseFacade)

Ferme le sous-jacent DbConnection .

ExecuteSqlCommand(DatabaseFacade, RawSqlString, IEnumerable<Object>)
Obsolète.

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction) .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter. Vous pouvez également envisager l’utilisation de ExecuteSqlInterpolated pour utiliser la syntaxe de chaîne interpolée pour créer des paramètres.

ExecuteSqlCommand(DatabaseFacade, RawSqlString, Object[])
Obsolète.

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction) .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en une valeur DbParameter- context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Vous pouvez également envisager l’utilisation de ExecuteSqlInterpolated pour utiliser la syntaxe de chaîne interpolée pour créer des paramètres.

ExecuteSqlCommand(DatabaseFacade, FormattableString)
Obsolète.

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction) .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en une valeur DbParameter- context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

ExecuteSqlCommand(DatabaseFacade, String, Object[])
ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, IEnumerable<Object>, CancellationToken)
Obsolète.

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction) .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter. Vous pouvez également envisager l’utilisation de ExecuteSqlInterpolated pour utiliser la syntaxe de chaîne interpolée pour créer des paramètres.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, Object[])
Obsolète.

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction) .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en une valeur DbParameter- context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm). Vous pouvez également envisager l’utilisation de ExecuteSqlInterpolated pour utiliser la syntaxe de chaîne interpolée pour créer des paramètres.

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
Obsolète.

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction) .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en une valeur DbParameter- context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
Obsolète.

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction(DatabaseFacade, DbTransaction) .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en une valeur DbParameter- context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

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

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un ExecutionStrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter.

ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un ExecutionStrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter.

ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un ExecutionStrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter :

context.Database.ExecuteSqlRawAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)

Toutefois, ne transmettez jamais une chaîne concaténée ou interpolée ($ "") avec des valeurs non validées fournies par l’utilisateur dans cette méthode. Cela peut exposer votre application à des attaques par injection SQL. Pour utiliser la syntaxe de chaîne interpolée, envisagez ExecuteSqlInterpolated(DatabaseFacade, FormattableString) d’utiliser pour créer des paramètres.

ExecuteSqlRaw(DatabaseFacade, String, Object[])

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un ExecutionStrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter :

context.Database.ExecuteSqlRaw("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)

Toutefois, ne transmettez jamais une chaîne concaténée ou interpolée ($ "") avec des valeurs non validées fournies par l’utilisateur dans cette méthode. Cela peut exposer votre application à des attaques par injection SQL. Pour utiliser la syntaxe de chaîne interpolée, envisagez ExecuteSqlInterpolated(DatabaseFacade, FormattableString) d’utiliser pour créer des paramètres.

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

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un Sqlserverexecutionstrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter :

context.Database.ExecuteSqlRawAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)

Toutefois, ne transmettez jamais une chaîne concaténée ou interpolée ($ "") avec des valeurs non validées fournies par l’utilisateur dans cette méthode. Cela peut exposer votre application à des attaques par injection SQL. Pour utiliser la syntaxe de chaîne interpolée, envisagez ExecuteSqlInterpolated(DatabaseFacade, FormattableString) d’utiliser pour créer des paramètres.

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un ExecutionStrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Comme pour toute API acceptant SQL, il est important de paramétrer toute entrée utilisateur pour vous protéger contre une attaque par injection SQL. Vous pouvez inclure des espaces réservés de paramètre dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Toutes les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter :

context.Database.ExecuteSqlRawAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)

Toutefois, ne transmettez jamais une chaîne concaténée ou interpolée ($ "") avec des valeurs non validées fournies par l’utilisateur dans cette méthode. Cela peut exposer votre application à des attaques par injection SQL. Pour utiliser la syntaxe de chaîne interpolée, envisagez ExecuteSqlInterpolated(DatabaseFacade, FormattableString) d’utiliser pour créer des paramètres.

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

Exécute l’instruction SQL donnée sur la base de données et retourne le nombre de lignes affectées.

Notez que cette méthode ne démarre pas de transaction. Pour utiliser cette méthode avec une transaction, appelez d’abord BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction .

Notez que le actuel ExecutionStrategy n’est pas utilisé par cette méthode, car le SQL ne peut pas être idempotent et ne s’exécute pas dans une transaction. Un ExecutionStrategy peut être utilisé explicitement, en veillant à utiliser également une transaction si le SQL n’est pas idempotent.

Ne transmettez jamais une chaîne concaténée ou interpolée ($ "") avec des valeurs non validées fournies par l’utilisateur dans cette méthode. Cela peut exposer votre application à des attaques par injection SQL.

GenerateCreateScript(DatabaseFacade)

Génère un script pour créer toutes les tables pour le modèle actuel.

GetAppliedMigrations(DatabaseFacade)

Obtient toutes les migrations qui ont été appliquées à la base de données cible.

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

Obtient de façon asynchrone toutes les migrations qui ont été appliquées à la base de données cible.

GetCommandTimeout(DatabaseFacade)

Retourne le délai d’expiration (en secondes) défini pour les commandes exécutées avec ce DbContext .

Notez que le délai d’expiration de la commande est différent du délai d’expiration de la connexion, qui est généralement défini sur la chaîne de connexion à la base de données.

GetConnectionString(DatabaseFacade)

Obtient la chaîne de connexion sous-jacente configurée pour ce DbContext .

GetDbConnection(DatabaseFacade)

Obtient le ADO.NET sous-jacent DbConnection de ce DbContext .

GetMigrations(DatabaseFacade)

Obtient toutes les migrations définies dans l’assembly des migrations configurées.

GetPendingMigrations(DatabaseFacade)

Obtient toutes les migrations définies dans l’assembly, mais qui n’ont pas été appliquées à la base de données cible.

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

Obtient de façon asynchrone toutes les migrations définies dans l’assembly, mais qui n’ont pas été appliquées à la base de données cible.

IsRelational(DatabaseFacade)

Retourne true si le fournisseur de base de données en cours d’utilisation est une base de données relationnelle.

Migrate(DatabaseFacade)

Applique toutes les migrations en attente pour le contexte à la base de données. Crée la base de données si elle n’existe pas déjà.

Notez que cette API s’exclut mutuellement avec EnsureCreated() . EnsureCreated n’utilise pas de migrations pour créer la base de données et, par conséquent, la base de données créée ne peut pas être mise à jour ultérieurement à l’aide de migrations.

MigrateAsync(DatabaseFacade, CancellationToken)

Applique de manière asynchrone toutes les migrations en attente pour le contexte dans la base de données. Crée la base de données si elle n’existe pas déjà.

Notez que cette API s’exclut mutuellement avec EnsureCreated() . EnsureCreated() n’utilise pas de migrations pour créer la base de données et, par conséquent, la base de données créée ne peut pas être mise à jour ultérieurement à l’aide de migrations.

OpenConnection(DatabaseFacade)

Ouvre le sous-jacent DbConnection .

OpenConnectionAsync(DatabaseFacade, CancellationToken)

Ouvre le sous-jacent DbConnection .

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

Définit le délai d’attente (en secondes) à utiliser pour les commandes exécutées avec ce DbContext .

Notez que le délai d’expiration de la commande est différent du délai d’expiration de la connexion, qui est généralement défini sur la chaîne de connexion à la base de données.

SetCommandTimeout(DatabaseFacade, TimeSpan)

Définit le délai d’expiration à utiliser pour les commandes exécutées avec ce DbContext .

Notez que le délai d’expiration de la commande est différent du délai d’expiration de la connexion, qui est généralement défini sur la chaîne de connexion à la base de données.

SetConnectionString(DatabaseFacade, String)

Définit la chaîne de connexion sous-jacente configurée pour ce DbContext .

Il se peut qu’il ne soit pas possible de modifier la chaîne de connexion si une connexion existante est ouverte.

SetDbConnection(DatabaseFacade, DbConnection)

Définit le ADO.NET sous-jacent DbConnection de ce DbContext .

La connexion ne peut être définie que lorsque la connexion existante, le cas échéant, n’est pas ouverte.

Notez que la connexion donnée doit être supprimée par le code d’application, car elle n’a pas été créée par Entity Framework.

UseTransaction(DatabaseFacade, DbTransaction)

Définit le DbTransaction à utiliser par les opérations de base de données sur DbContext .

UseTransaction(DatabaseFacade, DbTransaction, Guid)

Définit le DbTransaction à utiliser par les opérations de base de données sur DbContext .

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

Définit le DbTransaction à utiliser par les opérations de base de données sur DbContext .

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

Définit le DbTransaction à utiliser par les opérations de base de données sur DbContext .

IsSqlite(DatabaseFacade)

Retourne true si le fournisseur de base de données en cours d’utilisation est le fournisseur sqlite.

Cette méthode ne peut être utilisée qu’une fois que DbContext a été configuré, car il s’agit uniquement du fournisseur connu. Cela signifie que cette méthode ne peut pas être utilisée dans OnConfiguring(DbContextOptionsBuilder) , car il s’agit de l’emplacement où le code d’application définit le fournisseur à utiliser dans le cadre de la configuration du contexte.

IsSqlServer(DatabaseFacade)

Retourne true si le fournisseur de base de données en cours d’utilisation est le fournisseur SQL Server.

Cette méthode ne peut être utilisée qu’une fois que DbContext a été configuré, car il s’agit uniquement du fournisseur connu. Cela signifie que cette méthode ne peut pas être utilisée dans OnConfiguring(DbContextOptionsBuilder) , car il s’agit de l’emplacement où le code d’application définit le fournisseur à utiliser dans le cadre de la configuration du contexte.

EnlistTransaction(DatabaseFacade, Transaction)

Spécifie un existant Transaction à utiliser pour les opérations de base de données.

GetEnlistedTransaction(DatabaseFacade)

Retourne la transaction actuellement inscrite.

S’applique à