6

コマンドでEFを使用してSQLを実行しています.SqlQuery(string sql)

私のSQL文字列が完全にサニタイズされていることを確認したいので、論理的なアプローチは、SqlCommandパラメータを持つオブジェクトを使用してそれを構築することでした.

ただし、SqlCommand を使用して実行したくはありません。EF 呼び出しにプラグインできる文字列を SqlCommand に吐き出させたいだけです.SqlQuery(...)

.SqlQueryこれを行う方法、または注射が起こらないようにする別の方法はありますか?

4

2 に答える 2

12

EF はすぐにそれをサポートしていませんか?

パラメータで呼び出すことができるはずなSqlQueryので、SQL インジェクションなどを処理しますSqlCommand

var tests = context.Database.SqlQuery<Test>(
    @"SELECT Id, Name FROM tests where Name={0}", "TestName");

また..

var tests = context.Database.SqlQuery<Test>(
    @"SELECT Id, Name FROM tests where Name=@name", 
    new SqlParameter("@name", "TestName"));
于 2013-07-25T14:39:33.193 に答える
0

SqlCommand の CommandText プロパティを取得します。

string query = cmd.CommandText;

foreach (SqlParameter p in cmd.Parameters)
{
    query = query.Replace(p.ParameterName, p.Value.ToString());
}
于 2013-07-25T14:23:14.863 に答える