RelationalQueryableExtensions.FromSqlRaw<TEntity> 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.
public static System.Linq.IQueryable<TEntity> FromSqlRaw<TEntity> (this Microsoft.EntityFrameworkCore.DbSet<TEntity> source, string sql, params object[] parameters) where TEntity : class;
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
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
Entity Framework