次の方法で共有


RelationalQueryableExtensions.FromSqlRaw<TEntity> メソッド

定義

生の 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>

IQueryable<T>生の SQL クエリのベースとして使用する 。 (通常は )。DbSet<TEntity>

sql
String

生の SQL クエリ。

parameters
Object[]

パラメーターに割り当てる値。

戻り値

IQueryable<TEntity>

IQueryable<T>生の SQL クエリを表す 。

注釈

データベース プロバイダーが指定された 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 コマンドの実行 」を参照してください。

適用対象