Compartir a través de


RelationalQueryableExtensions.FromSqlRaw<TEntity> Método

Definición

Crea una consulta LINQ basada en una consulta SQL sin formato.

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

Tipo de los elementos de source.

Parámetros

source
DbSet<TEntity>

que IQueryable<T> se va a usar como base de la consulta SQL sin formato (normalmente una DbSet<TEntity>clase ).

sql
String

Consulta SQL sin formato.

parameters
Object[]

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

Devoluciones

IQueryable<TEntity>

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

Comentarios

Si el proveedor de base de datos admite la redacción en el SQL proporcionado, puede crear sobre la consulta SQL sin procesar mediante operadores LINQ: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name).

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. Cualquier valor de parámetro que suministre se convertirá 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 FromSql<TEntity>(DbSet<TEntity>, FormattableString) para crear parámetros.

Esta sobrecarga también acepta instancias DbParameter como valores de parámetro. Además de usar marcadores de posición posicionales como arriba ({0}), también puede usar marcadores de posición con nombre directamente en la cadena de consulta SQL.

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

Se aplica a