RelationalQueryableExtensions.FromSqlRaw<TEntity> Metoda

Definice

Vytvoří dotaz LINQ na základě nezpracovaného dotazu SQL.

public static System.Linq.IQueryable<TEntity> FromSqlRaw<TEntity> (this Microsoft.EntityFrameworkCore.DbSet<TEntity> source, string sql, params object[] parameters) where TEntity : class;
static member FromSqlRaw : Microsoft.EntityFrameworkCore.DbSet<'Entity (requires 'Entity : null)> * string * obj[] -> System.Linq.IQueryable<'Entity (requires 'Entity : null)> (requires 'Entity : null)
<Extension()>
Public Function FromSqlRaw(Of TEntity As Class) (source As DbSet(Of TEntity), sql As String, ParamArray parameters As Object()) As IQueryable(Of TEntity)

Parametry typu

TEntity

Typ elementů .source

Parametry

source
DbSet<TEntity>

AnIQueryable<T>, který se použije jako základ nezpracovaného dotazu SQL (obvykle ).DbSet<TEntity>

sql
String

Nezpracovaný dotaz SQL.

parameters
Object[]

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

Návraty

IQueryable<TEntity>

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

Poznámky

Pokud poskytovatel databáze podporuje psaní na zadaném SQL, můžete vytvořit nad nezpracovaný dotaz SQL pomocí operátorů LINQ: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name).

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 DbParameterhodnotu .

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í FromSql<TEntity>(DbSet<TEntity>, FormattableString) k vytvoření parametrů.

Toto přetížení také přijímá DbParameter instance jako hodnoty parametrů. Kromě použití pozičních zástupných symbolů jako výše ({0}) můžete také použít pojmenované zástupné symboly přímo v řetězci dotazu SQL.

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

Platí pro