Поделиться через


RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> Метод

Определение

Создает запрос LINQ на основе необработанного SQL-запроса, который возвращает результирующий набор скалярного типа, который изначально поддерживается поставщиком базы данных.

public static System.Linq.IQueryable<TResult> SqlQueryRaw<TResult> (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, params object[] parameters);
static member SqlQueryRaw : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * string * obj[] -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function SqlQueryRaw(Of TResult) (databaseFacade As DatabaseFacade, sql As String, ParamArray parameters As Object()) As IQueryable(Of TResult)

Параметры типа

TResult

Параметры

databaseFacade
DatabaseFacade

Объект DatabaseFacade для контекста.

sql
String

Необработанный SQL-запрос.

parameters
Object[]

Значения, присваиваемые параметрам.

Возвращаемое значение

IQueryable<TResult>

Объект , IQueryable<T> представляющий необработанный SQL-запрос.

Комментарии

Чтобы использовать этот метод с типом возвращаемого значения, который изначально не поддерживается поставщиком базы данных, используйте DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) метод .

Возвращаемый IQueryable<T> объект можно составить с помощью LINQ для создания более сложных запросов.

Обратите внимание, что этот метод не запускает транзакцию. Чтобы использовать этот метод с транзакцией, сначала вызовите BeginTransaction(DatabaseFacade, IsolationLevel) или UseTransaction.

Как и в случае с любым API, который принимает SQL, важно параметризовать любые входные данные пользователя для защиты от атак путем внедрения кода SQL. Вы можете включить заполнители параметров в строку ЗАПРОСА SQL, а затем указать значения параметров в качестве дополнительных аргументов. Все значения параметров, которые вы указали, будут автоматически преобразованы в DbParameter.

Однако никогда не передайте в этот метод объединенную или интерполированную строку ($"") с непроверенными значениями, предоставленными пользователем. Это может привести к атакам путем внедрения кода SQL. Чтобы использовать синтаксис интерполированной строки, рассмотрите возможность использования для SqlQuery<TResult>(DatabaseFacade, FormattableString) создания параметров.

Дополнительные сведения и примеры см. в разделе Выполнение необработанных команд SQL с помощью EF Core .

Применяется к