Condividi tramite


RelationalQueryableExtensions.FromSqlRaw<TEntity> Metodo

Definizione

Crea una query LINQ basata su una query SQL non elaborata.

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)

Parametri di tipo

TEntity

Tipo degli elementi di source.

Parametri

source
DbSet<TEntity>

Oggetto IQueryable<T> da usare come base della query SQL non elaborata (in genere un ).DbSet<TEntity>

sql
String

Query SQL non elaborata.

parameters
Object[]

Valori da assegnare ai parametri.

Restituisce

IQueryable<TEntity>

Oggetto IQueryable<T> che rappresenta la query SQL non elaborata.

Commenti

Se il provider di database supporta la composizione in SQL fornito, è possibile comporre nella parte superiore della query SQL non elaborata usando gli operatori LINQ: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name).

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input utente da proteggere da un attacco SQL injection. È possibile includere i segnaposto dei parametri nella stringa di query SQL e quindi specificare i valori dei parametri come argomenti aggiuntivi. I valori dei parametri forniti verranno convertiti automaticamente in DbParameter.

Tuttavia, non passare mai una stringa concatenata o interpolata ($"") con valori non convalidati forniti dall'utente in questo metodo. In questo modo, l'applicazione può esporre l'applicazione agli attacchi di inserimento SQL. Per usare la sintassi della stringa interpolata, è consigliabile usare FromSql<TEntity>(DbSet<TEntity>, FormattableString) per creare parametri.

Questo overload accetta DbParameter anche istanze come valori di parametro. Oltre a usare segnaposto posizionale come indicato sopra ({0}), è anche possibile usare segnaposto denominato direttamente nella stringa di query SQL.

Per altre informazioni ed esempi, vedere Esecuzione di comandi SQL non elaborati con EF Core .

Si applica a