Необязательное условие Where в запросе
У меня есть приложение, которое выполняет поиск в нашей базе данных (предоставляется через EF) для записей, отвечающих определенным условиям. У нас есть две основные таблицы (работа и получатели). Получатели связаны с таблицей заданий идентификатором задания.
Запись задания имеет различные поля (Дата процесса, Имя, Тип задания). У получателя есть много полей Имя и Идентификатор (например, Номер счета, Фамилия и т. Д.)
Я хочу представить экран поиска, где они видят список полей для поиска. Затем код 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? И возможно ли вернуть объекты Jobs и Recipients?
например, если я выбрал получателя., рабочие места. from.... бла бы это правильно проанализировал и вернул связанные объекты Recipient и Job?
1 ответ
Если вы начинаете со строго типизированного нефильтрованного запроса, вы можете добавить фильтры, используя Queryable.Where
,
Name = txtName.Text
If Not String.IsNullOrEmpty(Name) Then
Query = Query.Where(Function(j) j.Name.Contains(Name))
End If
Если ваш нефильтрованный запрос правильно связывает несколько записей, эти ссылки будут сохранены при добавлении фильтра.
(Отказ от ответственности: я обычно не использую VB.NET; могут быть глупые синтаксические ошибки, но вы должны быть в состоянии понять общую идею.)