Sdílet prostřednictvím


RelationalDatabaseFacadeExtensions.SqlQuery<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 poskytovatelem databáze.

public static System.Linq.IQueryable<TResult> SqlQuery<TResult> (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, FormattableString sql);
static member SqlQuery : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * FormattableString -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function SqlQuery(Of TResult) (databaseFacade As DatabaseFacade, sql As FormattableString) As IQueryable(Of TResult)

Parametry typu

TResult

Parametry

databaseFacade
DatabaseFacade

Kontext DatabaseFacade .

sql
FormattableString

Interpolovaný řetězec představující dotaz SQL s parametry.

Návraty

IQueryable<TResult>

Představující IQueryable<T> dotaz SQL interpolovaného řetězce.

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> je možné sestavit pomocí LINQ a vytvářet složitější dotazy.

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 každého rozhraní API, které přijímá SQL, je důležité parametrizovat jakýkoli uživatelský vstup, aby se chránil před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout držitelé míst parametrů a pak zadat hodnoty parametrů jako další argumenty. Všechny hodnoty parametrů, které zadáte, se automaticky převedou na DbParameter.

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

Platí pro