語言

RelationalDatabaseFacadeExtensions.SqlQueryRaw<TResult> 方法

定義

根據原始 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<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 指令 」。

適用於