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[]
パラメーターに割り当てる値。
戻り値
生の SQL クエリを表す IQueryable<T> 。
注釈
データベース プロバイダーでネイティブにサポートされていない戻り値の型でこのメソッドを使用するには、 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 コマンドの実行 を参照してください。