我有一个应用程序,它搜索我们的数据库(通过 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 对象?是否可以同时返回作业和收件人对象?
例如,如果我做了一个选择的收件人。工作。从。。。。等等,这会正确解析并返回链接的收件人和作业对象吗?
如果从强类型未筛选查询开始,则可以使用 Queryable.Where
添加筛选器。
Name = txtName.Text
If Not String.IsNullOrEmpty(Name) Then
Query = Query.Where(Function(j) j.Name.Contains(Name))
End If
如果未筛选的查询正确链接了多个记录,则在添加筛选器时将保留这些链接。
(免责声明:我通常不使用 VB.NET;可能存在愚蠢的语法错误,但您应该能够了解大致的想法。