RelationalQueryableExtensions.FromSqlRaw<TEntity> Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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 .