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;
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>
用 an IQueryable<T> 作為原始 SQL 查詢的基礎(通常是 DbSet<TEntity>)。
- sql
- String
原始的 SQL 查詢。
- parameters
- Object[]
參數要分配的值。
傳回
表示 IQueryable<T> 原始的 SQL 查詢。
備註
如果資料庫提供者支援在提供的 SQL 上編寫,你可以在原始 SQL 查詢上使用 LINQ 運算子來編寫: 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 指令 」。