RelationalQueryableExtensions.FromSqlRaw<TEntity> メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
生の SQL クエリに基づいて LINQ クエリを作成します。
public static System.Linq.IQueryable<TEntity> FromSqlRaw<TEntity>(this Microsoft.EntityFrameworkCore.DbSet<TEntity> source, string sql, params object?[] parameters) where TEntity : class;
public static System.Linq.IQueryable<TEntity> FromSqlRaw<TEntity>(this Microsoft.EntityFrameworkCore.DbSet<TEntity> source, string sql, params object[] parameters) where TEntity : class;
static member FromSqlRaw : Microsoft.EntityFrameworkCore.DbSet<'Entity (requires 'Entity : null)> * string * obj[] -> System.Linq.IQueryable<'Entity (requires 'Entity : null)> (requires 'Entity : null)
<Extension()>
Public Function FromSqlRaw(Of TEntity As Class) (source As DbSet(Of TEntity), sql As String, ParamArray parameters As Object()) As IQueryable(Of TEntity)
型パラメーター
- TEntity
sourceの要素の型。
パラメーター
- source
- DbSet<TEntity>
生の SQL クエリのベースとして使用する IQueryable<T> (通常は DbSet<TEntity>)。
- sql
- String
生の SQL クエリ。
- parameters
- Object[]
パラメーターに割り当てる値。
戻り値
生の SQL クエリを表す IQueryable<T> 。
注釈
指定された SQL での作成がデータベース プロバイダーでサポートされている場合は、LINQ 演算子 ( context.Blogs.FromSqlRaw("SELECT * FROM Blogs").OrderBy(b => b.Name)) を使用して、生の SQL クエリの上に作成できます。
SQL を受け入れる API と同様に、SQL インジェクション攻撃から保護するためにユーザー入力をパラメーター化することが重要です。 SQL クエリ文字列にパラメーターのプレース ホルダーを含め、パラメーター値を追加の引数として指定できます。 指定したパラメーター値は、自動的に DbParameterに変換されます。
ただし、検証されていないユーザー指定値を持つ連結文字列または補間文字列 ($"") をこのメソッドに渡すことはありません。 そうすることで、アプリケーションが SQL インジェクション攻撃にさらされる可能性があります。 挿入文字列構文を使用するには、 FromSql<TEntity>(DbSet<TEntity>, FormattableString) を使用してパラメーターを作成することを検討してください。
このオーバーロードは、パラメーター値として DbParameter インスタンスも受け入れます。 上記のように位置指定プレースホルダー ({0}) を使用するだけでなく、SQL クエリ文字列で名前付きプレースホルダーを直接使用することもできます。
詳細と例については、 EF Core を使用した生 SQL コマンドの実行 を参照してください。