RelationalQueryableExtensions.FromSqlRaw<TEntity> Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria uma consulta LINQ com base em uma consulta SQL bruta.
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)
Parâmetros de tipo
- TEntity
O tipo dos elementos de source.
Parâmetros
- source
- DbSet<TEntity>
Um IQueryable<T> para usar como base da consulta SQL bruta (normalmente um DbSet<TEntity>).
- sql
- String
A consulta SQL bruta.
- parameters
- Object[]
Os valores a serem atribuídos aos parâmetros.
Retornos
Uma IQueryable<T> representação da consulta SQL bruta.
Comentários
Se o provedor de banco de dados der suporte à composição no SQL fornecido, você poderá redigir sobre a consulta SQL bruta usando operadores LINQ: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name).
Assim como acontece com qualquer API que aceite o SQL, é importante parametrizar qualquer entrada do usuário para proteger contra um ataque de injeção de SQL. Você pode incluir os titulares de ponto de parâmetro na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter.
No entanto, nunca passe uma cadeia de caracteres concatenada ou interpolada ($"") com valores não validados fornecidos pelo usuário para esse método. Isso pode expor seu aplicativo a ataques de injeção de SQL. Para usar a sintaxe de cadeia de caracteres interpolada, considere usar FromSql<TEntity>(DbSet<TEntity>, FormattableString) para criar parâmetros.
Essa sobrecarga também aceita instâncias DbParameter como valores de parâmetro. Além de usar espaços reservados posicionais como acima ({0}), você também pode usar espaços reservados nomeados diretamente na cadeia de caracteres de consulta SQL.
Consulte a execução de comandos SQL brutos com o EF Core para obter mais informações e exemplos.