RelationalQueryableExtensions.FromSqlRaw<TEntity> Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.