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


RelationalDatabaseFacadeExtensions.SqlQuery<TResult> Метод

Определение

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

public static System.Linq.IQueryable<TResult> SqlQuery<TResult> (this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, FormattableString sql);
static member SqlQuery : Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade * FormattableString -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function SqlQuery(Of TResult) (databaseFacade As DatabaseFacade, sql As FormattableString) As IQueryable(Of TResult)

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

TResult

Параметры

databaseFacade
DatabaseFacade

Для DatabaseFacade контекста.

sql
FormattableString

Интерполированная строка, представляющая SQL-запрос с параметрами.

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

IQueryable<TResult>

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

Комментарии

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

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

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

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

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

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