Compartilhar via


RelationalQueryableExtensions.FromSqlRaw<TEntity> Método

Definição

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> 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

IQueryable<TEntity>

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