Sdílet prostřednictvím


RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Metoda

Definice

Vytvoří dotaz LINQ na základě nezpracovaného dotazu SQL, který vrátí sadu výsledků skalárního typu nativně podporovaného zprostředkovatelem databáze.

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

Kontext DatabaseFacade .

sql
String

Nezpracovaný dotaz SQL.

parameters
Object[]

Hodnoty, které mají být přiřazeny parametrům.

Návraty

IQueryable<TResult>

Představuje IQueryable<T> nezpracovaný dotaz SQL.

Poznámky

Pokud chcete tuto metodu použít s návratovým typem, který poskytovatel databáze nativně nepodporuje, použijte metodu DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) .

Vrácený kód IQueryable<T> se dá sestavit pomocí LINQ k vytváření složitějších dotazů.

Všimněte si, že tato metoda nespustí transakci. Chcete-li použít tuto metodu s transakcí, nejprve zavolejte BeginTransaction(DatabaseFacade, IsolationLevel) nebo UseTransaction.

Stejně jako u jakéhokoli rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitele umístění parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter.

Nikdy však do této metody nepředávejte zřetězený nebo interpolovaný řetězec ($"") s neověřenými uživateli zadanými hodnotami. Pokud to uděláte, může se vaše aplikace vystavit útokům injektáže SQL. Pokud chcete použít syntaxi interpolovaného řetězce, zvažte použití SqlQuery<TResult>(DatabaseFacade, FormattableString) k vytvoření parametrů.

Další informace a příklady najdete v tématu Spouštění nezpracovaných příkazů SQL pomocí EF Core .

Platí pro