Compartilhar via


RelationalDatabaseFacadeExtensions.SqlQuery<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> SqlQuery<TResult> (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, FormattableString sql);
static member SqlQuery : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * FormattableString -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function SqlQuery(Of TResult) (databaseFacade As DatabaseFacade, sql As FormattableString) As IQueryable(Of TResult)

Parâmetros de tipo

TResult

Parâmetros

databaseFacade
DatabaseFacade

O DatabaseFacade para o contexto.

sql
FormattableString

A cadeia de caracteres interpolada que representa uma consulta SQL com parâmetros.

Retornos

IQueryable<TResult>

Um IQueryable<T> que representa a consulta SQL de cadeia de caracteres interpolada.

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 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. Todos os valores de parâmetro fornecidos serão convertidos automaticamente em um DbParameter.

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

Aplica-se a