RelationalQueryableExtensions.FromSqlRaw<TEntity> Metoda

Definicja

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;
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

IQueryable<TEntity>

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 .

Dotyczy