RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> 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, 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
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
Entity Framework