Udostępnij za pośrednictwem


RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Metoda

Definicja

Tworzy zapytanie LINQ na podstawie nieprzetworzonego zapytania SQL, które zwraca zestaw wyników typu skalarnego natywnie obsługiwanego przez dostawcę bazy danych.

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)

Parametry typu

TResult

Parametry

databaseFacade
DatabaseFacade

Element DatabaseFacade dla kontekstu.

sql
String

Nieprzetworzone zapytanie SQL.

parameters
Object[]

Wartości do przypisania do parametrów.

Zwraca

IQueryable<TResult>

Reprezentujący IQueryable<T> nieprzetworzone zapytanie SQL.

Uwagi

Aby użyć tej metody z typem zwrotnym, który nie jest natywnie obsługiwany przez dostawcę bazy danych, użyj DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) metody .

Zwrócone dane mogą być komponowane IQueryable<T> przy użyciu LINQ w celu tworzenia bardziej złożonych zapytań.

Należy pamiętać, że ta metoda nie uruchamia transakcji. Aby użyć tej metody z transakcją, pierwsze wywołanie BeginTransaction(DatabaseFacade, IsolationLevel) lub UseTransaction.

Podobnie jak w przypadku każdego interfejsu API, który akceptuje język SQL, ważne jest, aby sparametryzować wszelkie dane wejściowe użytkownika w celu ochrony przed atakiem polegającym na wstrzyknięciu kodu SQL. W ciągu zapytania SQL można uwzględnić symbole zastępcze parametrów, a następnie podać wartości parametrów jako dodatkowe argumenty. Wszystkie podane wartości parametrów zostaną automatycznie przekonwertowane na parametr DbParameter.

Jednak nigdy nie należy przekazywać połączonych ani interpolowanych ciągów ($"") z nieweryfikowanymi wartościami dostarczonymi przez użytkownika do tej metody. Może to spowodować ujawnienie aplikacji ataków polegających na wstrzyknięciu kodu SQL. Aby użyć składni ciągu interpolowanego, rozważ użycie metody SqlQuery<TResult>(DatabaseFacade, FormattableString) do utworzenia parametrów.

Aby uzyskać więcej informacji i przykłady, zobacz Wykonywanie nieprzetworzonych poleceń SQL za pomocą programu EF Core .

Dotyczy