0

我有一个应用程序搜索我们的数据库(通过 EF 公开)以查找满足某些条件的记录。我们有两个主要表(作业和收件人)。收件人通过作业 ID 链接到作业表。

作业记录具有各种字段(处理日期、名称、作业类型)。收件人有很多姓名和 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 子句。我应该只使用实体 SQL 吗?

这也可以返回强类型的 EF 对象吗?是否可以同时返回 Jobs 和 Recipients 对象?

例如,如果我选择了收件人。, 工作。from....blah 这会正确解析并返回链接的 Recipient 和 Job 对象吗?

4

1 回答 1

2

如果您从强类型的未过滤查询开始,您可以使用Queryable.Where.

Name = txtName.Text
If Not String.IsNullOrEmpty(Name) Then
    Query = Query.Where(Function(j) j.Name.Contains(Name))
End If

如果您的未过滤查询正确链接了多条记录,则在您添加过滤器时将保留这些链接。

(免责声明:我通常不使用 VB.NET;可能存在愚蠢的语法错误,但您应该能够大致了解。)

于 2012-04-25T07:12:39.127 回答