EF 4 で Oracle シノニム (非エンティティ) の生の SQL クエリをパラメーター化しようとしていますが、いくつか問題があります。現在、私が見たいくつかの例に基づいて、以下のコードのようなことをしています:
string term="foo";
OracleParameter p = new OracleParameter("@param1", term);
object[] parameters = new object[] { p };
var model = db.Database.SqlQuery<ProjectTask>("SELECT * FROM (SELECT * FROM web_project_task_vw WHERE project_num like '%@param1%') WHERE rownum<=100", parameters).ToList();
これを実行しても結果は返されません。パラメータを次のようなものに置き換えると
"SELECT * FROM web_project_task_vw WHERE project_num like '%"+term+"%'"
期待どおりの結果が返されますが、これは明らかに SQL インジェクションのリスクです。
パラメータがOracle DBのEF 4でどのように機能するかについて、誰かが私を正しい方向に向けることができますか?
ありがとう。