RelationalQueryableExtensions.FromSqlRaw<TEntity> Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy zapytanie LINQ na podstawie nieprzetworzonego zapytania 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ów elementu source
.
Parametry
- source
- DbSet<TEntity>
Element IQueryable<T> do użycia jako podstawa nieprzetworzonego zapytania SQL (zazwyczaj DbSet<TEntity>).
- sql
- String
Nieprzetworzone zapytanie SQL.
- parameters
- Object[]
Wartości do przypisania do parametrów.
Zwraca
Reprezentujący IQueryable<T> nieprzetworzone zapytanie SQL.
Uwagi
Jeśli dostawca bazy danych obsługuje komponowanie w podanym języku SQL, możesz utworzyć na podstawie nieprzetworzonego zapytania SQL przy użyciu operatorów LINQ: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name)
.
Podobnie jak w przypadku każdego interfejsu API, który akceptuje język SQL, ważne jest, aby sparametryzować wszelkie dane wejściowe użytkownika w celu ochrony przed atakiem polegającym na wstrzyknięciu kodu SQL. W ciągu zapytania SQL można uwzględnić symbole zastępcze parametrów, a następnie podać wartości parametrów jako dodatkowe argumenty. Wszystkie podane wartości parametrów zostaną automatycznie przekonwertowane na DbParameterwartość .
Jednak nigdy nie należy przekazywać połączonych ani interpolowanych ciągów ($""
) z nieweryfikowanymi wartościami dostarczonymi przez użytkownika do tej metody. Może to spowodować ujawnienie aplikacji ataków polegających na wstrzyknięciu kodu SQL. Aby użyć składni ciągu interpolowanego, rozważ użycie metody FromSql<TEntity>(DbSet<TEntity>, FormattableString) do utworzenia parametrów.
To przeciążenie akceptuje DbParameter również wystąpienia jako wartości parametrów. Oprócz używania symboli zastępczych pozycyjnych, jak powyżej ({0}
), można również użyć nazwanych symboli zastępczych bezpośrednio w ciągu zapytania SQL.
Aby uzyskać więcej informacji i przykłady, zobacz Wykonywanie nieprzetworzonych poleceń SQL za pomocą programu EF Core .