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<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 .
Применяется к
Entity Framework