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 prvků .source
Parametry
- source
- DbSet<TEntity>
Použití IQueryable<T> jako základ nezpracovaného dotazu SQL (obvykle a DbSet<TEntity>).
- sql
- String
Nezpracovaný dotaz SQL.
- parameters
- Object[]
Hodnoty, které se mají přiřadit k 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 vstup uživatele pro ochranu před útokem prostřednictvím injektáže SQL. Do řetězce dotazu SQL můžete zahrnout vlastníky 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 nepředávejte zřetězený nebo interpolovaný řetězec ($"") s neověřenými hodnotami zadanými uživatelem do této metody. Tím se může vaše aplikace vystavit útokům prostřednictvím injektáže SQL. Pokud chcete použít interpolovanou syntaxi ř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 s EF Core .