EF 4でOracleシノニム(非エンティティ)の生のSQLクエリをパラメータ化しようとしていますが、いくつか問題があります。現在のところ、私が見たいくつかの例に基づいて、以下のコードのようなことをしています。Entity Frameworkで生の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でパラメータがどのように機能するのかを誰かが正しい方向に向けることができますか?
ありがとうございました。
::の代わりに@
だからそれは次のようになりますか? – RogerN