我正在尝试为 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 注入风险。
谁能指出我应该如何在 EF 4 中为 Oracle DB 工作的参数的正确方向?
谢谢。