【发布时间】:2011-05-03 18:30:12
【问题描述】:
我正在搜索 EF 数据模型中文本框控件的字符串输入。有人可以帮我在代码文件中构造 where 子句来做到这一点。 我在代码中尝试了下面的一段代码,即使它在我输入搜索字符串并提交搜索时编译会抛出错误。
Where("it.[CaseName] like '%'" + searchString +
"'%' or it.[CaseNumber] like '%'" + searchString +
"'%' or it.[AppRegNumber] like '%'" + searchString +
"'%' or it.[SSNo] like '%'" + searchString + "'%'")
当在 EntityDataSource 控件标记中使用相同的 where 子句时,它会正确接受和搜索。 我正在更改我的页面以使用 ObjectDataSource 控件连接到业务逻辑层类,而不是直接连接到 EDM 数据模型。
【问题讨论】:
-
将 where 子句更改为 Where("it.[CaseName] like '%" + searchString + "%'" + "or it.[CaseNumber] like '%" + searchString + "%'或它。[AppRegNumber] 像 '%" + searchString + "%'")。这有效
-
顺便说一句:你知道 SQL 注入吗?将用户在网页文本框中输入的字符串直接放入 SQL 子句中可能非常危险。这就是存在
ObjectParameter重载的原因,并且是强烈推荐的构造查询的方法(请参阅下面的答案)。您可以在此处观看 SQL 注入可能发生的危险事情:pluralsight-training.net/microsoft/players/… 意外地,该演示非常适合您的查询。 -
@Slauma,感谢您提醒这个漏洞。它只是让我忘记了。
标签: asp.net entity-framework c#-4.0