0
我有一个应用程序可以搜索我们的数据库(通过EF公开)来查找满足特定条件的记录。我们有两个主表(工作和收件人)。收件人通过作业ID链接到作业表。查询中的Where子句
作业记录包含各种字段(处理日期,名称,作业类型)。收件人有很多姓名和ID字段(例如帐号,姓氏等)
我想要显示一个搜索屏幕,他们在哪里看到要搜索的字段列表。 ASP.net代码会查看用户输入(或选定)哪个文本框,并基于该文本构建查询。
我只是试图找到最有效的方式。
粗糙的逻辑是:
if not string.isnullorempty(txtName.text) then
'Query.Where.Add clause = " AND Name like '@txtName'
'Query.WhereParameters.Add("@txtName",txtNAme.text
end if
if not string.isnullorempty(txtAccountNumber.text) then
.....etc
if not string.isnullorempty(txtFromDate.text) then..
如果我坚持是搞清楚如何在更多的where子句添加。我应该只使用Entity SQL吗?
这可以返回强类型的EF对象吗?是否有可能返回作业和收件人对象?
例如如果我做了一个选择收件人。 ,工作。 from .... blah这个解析是否正确并返回链接的Recipient和Job对象?
所以,如果我保持通话query.where并添加新的函数,它们会被类似于SQL中的“和”吗? E.g name = john和date = @date。有没有办法指定他们作为or加入? – Dane 2012-04-25 07:51:22
1)是的。 (请记住'Query ='部分,不要只调用Query.Where'并忽略结果。)从概念上讲,Query = Query.Where(a).Where(b).Where(c)'does(伪代码)Query =(select * from(select * from(select * from Query where a)where b)where c)',but that results with results'Query =(select * from Query where && b && c)',EF通常会这样翻译它。 2)你可以使用'联合'这个。 Query.Where(a).Union(Query.Where(b))'给出与Query.Where(a‖b)'相同的结果。 – hvd 2012-04-25 08:01:19