Compartilhar via


RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Método

Definição

Cria uma consulta LINQ com base em uma consulta SQL bruta, que retorna um conjunto de resultados de um tipo escalar com suporte nativo pelo provedor de banco de dados.

public static System.Linq.IQueryable<TResult> SqlQueryRaw<TResult> (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, params object[] parameters);
static member SqlQueryRaw : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * string * obj[] -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function SqlQueryRaw(Of TResult) (databaseFacade As DatabaseFacade, sql As String, ParamArray parameters As Object()) As IQueryable(Of TResult)

Parâmetros de tipo

TResult

Parâmetros

databaseFacade
DatabaseFacade

O DatabaseFacade para o contexto.

sql
String

A consulta SQL bruta.

parameters
Object[]

Os valores a serem atribuídos aos parâmetros.

Retornos

IQueryable<TResult>

Um IQueryable<T> que representa a consulta SQL bruta.

Comentários

Para usar esse método com um tipo de retorno que não tem suporte nativo pelo provedor de banco de dados, use o DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) método .

O retornado IQueryable<T> pode ser composto usando LINQ para criar consultas mais complexas.

Observe que esse método não inicia uma transação. Para usar esse método com uma transação, primeira chamada BeginTransaction(DatabaseFacade, IsolationLevel) ou UseTransaction.

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 espaços reservados para parâmetros 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 SqlQuery<TResult>(DatabaseFacade, FormattableString) para criar parâmetros.

Consulte Executando comandos SQL brutos com o EF Core para obter mais informações e exemplos.

Aplica-se a