RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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
Entity Framework