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 命令 。