次の方法で共有


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 を使用してより複雑なクエリを作成することで構成できます。

このメソッドはトランザクションを開始しないことに注意してください。 トランザクションでこのメソッドを使用するには、最初に または UseTransactionを呼び出しますBeginTransaction(DatabaseFacade, IsolationLevel)

SQL を受け入れる API と同様に、SQL インジェクション攻撃から保護するために、ユーザー入力をパラメーター化することが重要です。 SQL クエリ文字列にパラメーター プレース ホルダーを含め、追加の引数としてパラメーター値を指定できます。 指定したパラメーター値は、自動的に DbParameter に変換されます。

ただし、検証されていないユーザー指定の値を持つ連結文字列または補間文字列 ($"") をこのメソッドに渡すことはありません。 これを行うと、アプリケーションが SQL インジェクション攻撃にさらされる可能性があります。 補間文字列構文を使用するには、 を使用して SqlQuery<TResult>(DatabaseFacade, FormattableString) パラメーターを作成することを検討してください。

詳細と例については、「 EF Core を使用した生 SQL コマンドの実行 」を参照してください。

適用対象