RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> 方法

定義

根據原始 SQL 查詢建立 LINQ 查詢,此查詢會傳回資料庫提供者原生支援的純量類型結果集。

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>>) 方法。

傳回 IQueryable<T> 的 可以透過使用 LINQ 撰寫,以建置更複雜的查詢。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction

如同任何接受 SQL 的 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter。

不過, 絕對不要 將串連或內插字串傳遞 ($"") ,並將未驗證的使用者提供值傳遞至此方法。 這樣做可能會讓您的應用程式暴露在 SQL 插入式攻擊中。 若要使用插入字串語法,請考慮使用 SqlQuery<TResult>(DatabaseFacade, FormattableString) 來建立參數。

如需詳細資訊和範例,請參閱 使用 EF Core 執行原始 SQL 命令

適用於