RelationalQueryableExtensions.FromSqlRaw<TEntity> Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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;
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<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 .