Share via


RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Metodo

Definizione

Crea una query LINQ basata su una query SQL non elaborata, che restituisce un set di risultati di un tipo scalare supportato in modo nativo dal provider di database.

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)

Parametri di tipo

TResult

Parametri

databaseFacade
DatabaseFacade

Oggetto DatabaseFacade per il contesto.

sql
String

Query SQL non elaborata.

parameters
Object[]

Valori da assegnare ai parametri.

Restituisce

IQueryable<TResult>

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

Commenti

Per usare questo metodo con un tipo restituito non supportato in modo nativo dal provider di database, usare il DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) metodo .

L'oggetto restituito IQueryable<T> può essere composto tramite LINQ per compilare query più complesse.

Si noti che questo metodo non avvia una transazione. Per usare questo metodo con una transazione, chiamare BeginTransaction(DatabaseFacade, IsolationLevel) prima o UseTransaction.

Come per qualsiasi API che accetta SQL, è importante parametrizzare qualsiasi input dell'utente per proteggersi 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. Tutti 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 SQL injection. Per usare la sintassi di stringa interpolata, è consigliabile usare SqlQuery<TResult>(DatabaseFacade, FormattableString) per creare parametri.

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

Si applica a