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;
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> a ser usado como a 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
Um IQueryable<T> que representa a consulta SQL bruta.
Comentários
Se o provedor de banco de dados der suporte à composição no SQL fornecido, você poderá compor 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 de usuário para proteger contra um ataque de injeção de SQL. Você pode incluir detentores de parâmetros na cadeia de caracteres de consulta SQL e, em seguida, fornecer valores de parâmetro como argumentos adicionais. Qualquer valor de parâmetro fornecido será automaticamente convertido 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 Executando comandos SQL brutos com o EF Core para obter mais informações e exemplos.
Aplica-se a
Entity Framework