11

Object []このメソッドは、おそらく SQL インジェクションを回避するために、クエリの文字列とパラメーターの配列を取ります。

ただし、オブジェクト配列に何を入れるべきかについて文書化されている場所はどこにもありません。

これとまったく同じことを尋ねる SO に関する別の質問がありますが、受け入れられた答えは機能しません: DbSet<T>.SqlQuery() を使用する場合、名前付きパラメーターを使用する方法は?

考えられるすべての形式のパラメーター置換を試しましたが、すべて例外がスローされました。何か案は?

それは次のように簡単でしたか?

SqlQuery("SELECT * FROM @table", "Users")

編集:ここに私が試したいくつかのことがあります(例外はですSqlException):

    var result = context.Users.SqlQuery<T>("SELECT * FROM @p0 WHERE @p1 = '@p2'", 
new SqlParameter("p0", tableName), 
new SqlParameter("p1", propertyName), 
new SqlParameter("p2", searchQuery));

これは与えるMust declare the table variable "@p0".

var result = context.Users.SqlQuery<T>("SELECT * FROM {0} WHERE {1} = '{2}'", tableName, propertyName, searchQuery);

これは与えるMust declare the table variable "@p0".

4

1 に答える 1