RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
根據原始 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<T> 原始的 SQL 查詢。
備註
若要使用此方法,且回傳型別未被資料庫提供者原生支援,請使用該 DefaultTypeMapping<TScalar>(Action<TypeMappingConfigurationBuilder<TScalar>>) 方法。
可 IQueryable<T> 透過 LINQ 組合回來建立更複雜的查詢。
請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction。
和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter。
然而, 切勿 在此方法中傳遞未驗證使用者提供的串接或插值字串$""()。 這樣做可能會讓你的應用程式暴露在 SQL 注入攻擊之下。 若要使用插值字串語法,請考慮使用 來 SqlQuery<TResult>(DatabaseFacade, FormattableString) 建立參數。
更多資訊與範例請參閱「 使用 EF Core 執行原始 SQL 指令 」。