RelationalQueryableExtensions.FromSqlRaw<TEntity> Metoda

Definicja

Tworzy zapytanie LINQ na podstawie nieprzetworzonego zapytania SQL.

Jeśli dostawca bazy danych obsługuje tworzenie 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ć wszystkie 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ć posiadacze miejsc parametrów, a następnie podać wartości parametrów jako dodatkowe argumenty. Wszystkie wartości parametrów, które podajesz, zostaną automatycznie przekonwertowane na wartość DbParameter:

context.Blogs.FromSqlRaw("SELECT * FROM Blogs WHERE Name = {0}", userSuppliedSearchTerm)

Jednak nigdy nie należy przekazywać połączonych lub interpolowanych ciągów ($"") z niewalidowanymi wartościami podanymi przez użytkownika w tej metodzie. Może to spowodować uwidocznienie aplikacji w przypadku ataków polegających na wstrzyknięciu kodu SQL. Aby użyć składni ciągu interpolowanego, rozważ użycie metody FromSqlInterpolated<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:

context.Blogs.FromSqlRaw("SELECT * FROM Blogs WHERE Name = @searchTerm", new SqlParameter("@searchTerm", userSuppliedSearchTerm))
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, które mają być przypisane do parametrów.

Zwraca

IQueryable<TEntity>

Reprezentująca IQueryable<T> nieprzetworzone zapytanie SQL.

Uwagi

Aby uzyskać więcej informacji, zobacz Wykonywanie nieprzetworzonych poleceń SQL za pomocą programu EF Core .

Dotyczy