Compartir a través de


RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Método

Definición

Crea una consulta LINQ basada en una consulta SQL sin procesar, que devuelve un conjunto de resultados de un tipo escalar admitido de forma nativa por el proveedor de base de datos.

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

para DatabaseFacade el contexto.

sql
String

Consulta SQL sin formato.

parameters
Object[]

Los valores que se van a asignar a los parámetros.

Devoluciones

IQueryable<TResult>

que IQueryable<T> representa la consulta SQL sin formato.

Comentarios

Para usar este método con un tipo de valor devuelto que no sea compatible de forma nativa con el proveedor de base de datos, use el DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) método .

El devuelto IQueryable<T> se puede componer mediante LINQ para crear consultas más complejas.

Tenga en cuenta que este método no inicia una transacción. Para usar este método con una transacción, llame primero a BeginTransaction(DatabaseFacade, IsolationLevel) o UseTransaction.

Al igual que con cualquier API que acepte SQL, es importante parametrizar cualquier entrada de usuario para protegerse frente a un ataque por inyección de código SQL. Puede incluir marcadores de posición de parámetros en la cadena de consulta SQL y, a continuación, proporcionar valores de parámetro como argumentos adicionales. Los valores de parámetro que proporcione se convertirán automáticamente en dbParameter.

Sin embargo, nunca pase una cadena concatenada o interpolada ($"") con valores proporcionados por el usuario no validados en este método. Si lo hace, puede exponer la aplicación a ataques por inyección de código SQL. Para usar la sintaxis de cadena interpolada, considere la posibilidad de usar SqlQuery<TResult>(DatabaseFacade, FormattableString) para crear parámetros.

Consulte Ejecución de comandos SQL sin formato con EF Core para obtener más información y ejemplos.

Se aplica a