语言

RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> 方法

定义

基于原始 SQL 查询创建 LINQ 查询,该查询返回数据库提供程序本机支持的标量类型的结果集。

public static System.Linq.IQueryable<TResult> SqlQueryRaw<TResult>(this Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade databaseFacade, string sql, params object[] parameters);
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>>) 。

可以通过使用 LINQ 生成更复杂的查询来组合返回 IQueryable<T> 的查询。

请注意,此方法不会启动事务。 若要将此方法与事务一起使用,请首先调用 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction。

与接受 SQL 的任何 API 一样,必须参数化任何用户输入以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数位置持有者,然后将参数值作为其他参数提供。 你提供的任何参数值将自动转换为 DbParameter。

但是, 从不 将具有未验证的用户提供值的串联或内插字符串($"")传递到此方法中。 这样做可能会向 SQL 注入攻击公开应用程序。 若要使用内插字符串语法,请考虑使用 SqlQuery<TResult>(DatabaseFacade, FormattableString) 创建参数。

有关详细信息和示例,请参阅 使用 EF Core 执行原始 SQL 命令 。

适用于