Partager via


RelationalQueryableExtensions.FromSqlRaw<TEntity> Méthode

Définition

Crée une requête LINQ basée sur une requête SQL brute.

public static System.Linq.IQueryable<TEntity> FromSqlRaw<TEntity> (this Microsoft.EntityFrameworkCore.DbSet<TEntity> source, string sql, params object[] parameters) where TEntity : class;
static member FromSqlRaw : Microsoft.EntityFrameworkCore.DbSet<'Entity (requires 'Entity : null)> * string * obj[] -> System.Linq.IQueryable<'Entity (requires 'Entity : null)> (requires 'Entity : null)
<Extension()>
Public Function FromSqlRaw(Of TEntity As Class) (source As DbSet(Of TEntity), sql As String, ParamArray parameters As Object()) As IQueryable(Of TEntity)

Paramètres de type

TEntity

Le type des éléments de source.

Paramètres

source
DbSet<TEntity>

IQueryable<T> à utiliser comme base de la requête SQL brute (généralement un DbSet<TEntity>).

sql
String

Requête SQL brute.

parameters
Object[]

Valeurs à affecter aux paramètres.

Retours

IQueryable<TEntity>

IQueryable<T> représentant la requête SQL brute.

Remarques

Si le fournisseur de base de données prend en charge la composition sur le SQL fourni, vous pouvez composer sur la requête SQL brute à l’aide d’opérateurs LINQ : context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name).

Comme pour toute API qui accepte 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ètres dans la chaîne de requête SQL, puis fournir des valeurs de paramètre en tant qu’arguments supplémentaires. Les valeurs de paramètre que vous fournissez seront automatiquement converties en DbParameter.

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

Cette surcharge accepte DbParameter également les instances en tant que valeurs de paramètre. En plus d’utiliser des espaces réservés positionnels comme ci-dessus ({0}), vous pouvez également utiliser des espaces réservés nommés directement dans la chaîne de requête SQL.

Pour plus d’informations et d’exemples, consultez Exécution de commandes SQL brutes avec EF Core .

S’applique à