RelationalQueryableExtensions.FromSqlRaw<TEntity> 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
基于原始 SQL 查询创建 LINQ 查询。
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)
类型参数
- TEntity
source
的元素类型。
参数
- source
- DbSet<TEntity>
用作 IQueryable<T> 原始 SQL 查询基础的 , (通常为 DbSet<TEntity>) 。
- sql
- String
原始 SQL 查询。
- parameters
- Object[]
要分配给参数的值。
返回
表示 IQueryable<T> 原始 SQL 查询的 。
注解
如果数据库提供程序支持对提供的 SQL 进行撰写,则可以使用 LINQ 运算符在原始 SQL 查询的基础上进行撰写: context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name)
。
与任何接受 SQL 的 API 一样,必须参数化任何用户输入,以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数位置持有者,然后将参数值作为其他参数提供。 提供的任何参数值将自动转换为 DbParameter。
但是, 切勿 将串联或内插字符串 ($""
) 与未经验证的用户提供的值传递到此方法中。 这样做可能会使应用程序受到 SQL 注入攻击。 若要使用内插字符串语法,请考虑使用 FromSql<TEntity>(DbSet<TEntity>, FormattableString) 创建参数。
此重载还接受 DbParameter 实例作为参数值。 除了使用上述位置占位符 ({0}
) ,还可以直接在 SQL 查询字符串中使用命名占位符。
有关详细信息和示例 ,请参阅使用 EF Core 执行原始 SQL 命令 。