Поделиться через


Запросы: извлечение сведений из источника данных.

Запросы используются для получения данных, удовлетворяющих заданному набору критериев.Например, если требуется узнать количество клиентов, живущих в Соединенных Штатах, необходимо создать запрос, который будет сканировать список клиентов и проверять страну и регион, указанные в их адресе.

Запросы можно создавать и сохранять в модели приложения.Условия запроса можно задавать с помощью конструктора запросов.Если возможностей конструктора недостаточно, запросы можно расширять путем написания кода.По завершении указания критериев, запросы можно использовать на экране или исполнять их как часть бизнес-логики.

Создание запроса

Запросы можно создавать в Обозревателе решений.Запрос основывается только на одной сущности или таблице модели приложения (например, на сущности Customer).Запрос может также основываться на других запросах модели приложения.Сущность, таблица или запрос, на котором основан данный запрос, называется исходными данными для запроса.Дополнительные сведения см. в разделе Практическое руководство. Добавление, удаление и изменение запроса.

Разработка запроса с помощью конструктора запросов

В большинстве случаев запрос можно создать визуально с помощью конструктора запросов.Чтобы добавить в запрос условия фильтра, группы фильтров, условия сортировки и параметры, выберите соответствующие элементы в конструкторе.Дополнительные сведения см. в разделе Практическое руководство. Разработка запроса с помощью конструктора запросов.

Ee256728.collapse_all(ru-ru,VS.110).gifУсловия фильтра

Чтобы уменьшить число результатов запроса, необходимо добавить одно или несколько условий фильтра.Условие фильтра описывает правило, которое должно соблюдаться для каждой строки данных.В результаты запроса включаются только те строки, которые соответствуют условиям запроса.Условие фильтра состоит из следующих трех основных частей:

  • Свойство выбора

  • Значение для сравнения

  • Оператор

Свойство выбора — это свойство, которое требуется использовать в качестве базы для условия фильтра.Например, чтобы вернуть заказы, имеющие определенную дату заказа, на продажу, можно выделить свойство OrderDate.Свойством выбора может являться какое-либо свойство данных источника или свойство связанной сущности или таблицы.В конструкторе запросов свойства отображаются только для связанных сущностей или таблиц с кратностью от нуля до единицы.Например, заказу на продажу может соответствовать только один клиент.Таким образом, в запросе, который возвращает заказы на продажу, можно выбрать свойства связанного клиента как часть условия фильтра.Чтобы использовать свойства для связанной сущности или таблицы с кратностью «многие», необходимо расширить запрос с помощью кода.

Значение для сравнения сравнивается со свойством выбора.Значением для сравнения может быть литерал, например строка «9/22/2009 12:00:00 AM», свойство выбора, параметр или относительное значение, например Сейчас, Сегодня или Начало недели.

Оператор — это символ, определяющий нужный тип сравнения.Например, для возврата на продажу заказов, у которых дата заказа меньше «9/22/2009 12:00:00 AM», используйте оператор «<».

Полное условие фильтра, описанное в этом примере: Where OrderDate < 9/22/2009 12:00:00 AM.

Есть возможность задать отношение между условиями фильтра с помощью одного из следующих логических операторов: And, Or, And Not, Or Not.

Порядок условий можно изменить, перетаскивая их в нужные места в конструкторе.

На следующем рисунке показаны составные части условия фильтра.

Условия фильтра в запросе

Ee256728.collapse_all(ru-ru,VS.110).gifГруппы фильтров

Условия фильтра можно сгруппировать таким образом, чтобы они вычислялись как единый блок, отдельно от остальных условий фильтра.Для этого необходимо создать группу фильтров в конструкторе запросов.

Группировка условий фильтра в запросах действует аналогично скобкам вокруг выражений в математическом уравнении или логическом выражении.При группировке условий логический оператор, стоящий перед первым условием в группе, применяется ко всей группе.

Так же, как и отдельные условия фильтра, можно изменять порядок групп фильтров, перетаскивая их в нужное место в конструкторе.

На следующем рисунке показаны две группы фильтров.

Группы фильтров в запросе

Ee256728.collapse_all(ru-ru,VS.110).gifУсловия сортировки

Чтобы указать порядок по умолчанию, в котором записи отображаются в результатах запроса, добавьте одно или несколько условий сортировки.Условие сортировки содержит свойство и направление (например, OrderDate и Ascending).Условия сортировки определяют порядок сортировки по умолчанию записей, которые выводятся на экране.Пользователи могут просматривать записи в другом порядке, выбирая соответствующие параметры в пользовательском интерфейсе экрана.В конструкторе запросов можно изменить порядок условий сортировки, перетаскивая их в нужное место в списке.

Ee256728.collapse_all(ru-ru,VS.110).gifПараметры

Также можно разрешить пользователям выполнять динамическую фильтрацию результатов запроса.Например, можно разрешить пользователю просматривать заказы на продажу по регионам, выбрав нужную территорию продаж на экране.Для поддержки этого сценария добавьте в запрос параметр и присвойте запросу соответствующее имя (например, SalesTerritory).Затем установите параметр в качестве значения фильтра для сравнения.Например, выражение запроса может иметь следующий вид: Where TerritoryID = SalesTerritory.

Предоставляется возможность создавать экраны, на которых пользователи могут вводить значение параметра во время выполнения.Дополнительные сведения см. в разделе Практическое руководство. Ввод значения для параметра запроса.

Расширение запроса с помощью кода

Некоторые типы условий фильтра не поддерживаются в конструкторе запросов.Если возможностей конструктора недостаточно, можно с помощью кода добавить в запрос условия.

ПримечаниеПримечание

Расширение запроса на экране не поддерживается.Расширять можно только запросы, отображаемые в Обозревателе решений.Дополнительные сведения об изменении запроса на экране см. в разделе Практическое руководство. Фильтрация данных на экране Silverlight.

В следующей таблице приведены два условия фильтра, которые нельзя создать с помощью конструктора запросов.

Условие фильтра

Причины для использования кода

Возвращает первые 10 клиентов по числу заказов на продажу.

Чтобы определить число заказов на продажу, необходимо использовать операцию Count.Конструктор запросов не поддерживает использование таких операций, как Count, Aggregate и Sum

Возвращает всех клиентов, которые приобрели тачку.

Чтобы определить, приобрел ли клиент тачку, необходимо использовать условие фильтра, которое ссылается на сущность Product.Поскольку один клиент может быть связан с несколькими продуктами, сущность Product, вероятно, может находиться на стороне «многие» отношения Customer-Product.Конструктор запросов не поддерживает переход на сторону отношения «многие».

Чтобы устранить это ограничение, можно добавить настраиваемый код в метод, который вызывается при выполнении запроса.Дополнительные сведения см. в разделе Практическое руководство. Расширение запроса с помощью кода.

В коде условия фильтра можно определить с помощью стандартного синтаксиса LINQ.При выполнении запроса для получения результатов условия, указанные в конструкторе запросов, объединяются с условиями, определенными в коде.

Любые условия, определяемые в коде, не отображаются как условия фильтра в конструкторе запросов.Аналогичным образом, условия фильтра, добавляемые с помощью конструктора запросов, не отображаются в методе.Добавить параметр в запрос можно только с помощью конструктора запросов.Параметры, добавленные с помощью конструктора запросов, отображаются в списке параметров метода.

Использование запроса

Запрос можно использовать на экране, а также выполнять в коде в рамках бизнес-операций.

Ee256728.collapse_all(ru-ru,VS.110).gifИспользование запроса на экране

Предоставляется возможность создать экран, основанный на настраиваемом запросе (например, экран, на котором отображается список клиентов на территории США).Дополнительные сведения см. в разделе Практическое руководство. Создание экрана Silverlight.

На экран можно добавить несколько запросов.Например, можно создать запрос, отображающий список заказов для конкретного клиента.Этот запрос можно добавить на экран клиента.После этого можно разрешить пользователю выбрать клиента для просмотра соответствующих ему заказов на продажу.Дополнительные сведения о выполнении этой операции см. в разделе Практическое руководство. Ввод значения для параметра запроса.

Ee256728.collapse_all(ru-ru,VS.110).gifИспользование запроса в коде

Запросы можно извлекать из модели приложения, а затем выполнять в коде.Это позволяет работать с целевыми коллекциями данных в рамках бизнес-логики приложения.Дополнительные сведения см. в разделе Практическое руководство. Извлечение данных из запроса с помощью кода.

Связанные разделы

Заголовок

Описание

Практическое руководство. Добавление, удаление и изменение запроса

Описывается порядок добавления запроса в пользовательском интерфейсе Visual Studio LightSwitch.

Практическое руководство. Разработка запроса с помощью конструктора запросов

Описывается процесс определения условий фильтра, параметров и условий сортировки для запроса с помощью визуального конструктора.

Практическое руководство. Ввод значения для параметра запроса

Описывается, как разрешить пользователю ввод значения для параметра запроса.

Практическое руководство. Расширение запроса с помощью кода

Описывается порядок изменения запроса вне конструктора.

Практическое руководство. Обработка событий запроса

Описывается порядок обработки событий, которые происходят до и после выполнения запроса.

Практическое руководство. Извлечение данных из запроса с помощью кода

Описывается порядок извлечения и выполнения запроса с помощью кода.

Справочные материалы. Свойства конструктора запросов

Описываются свойства запросов и элементы запроса.Значения этих свойств можно задать в окне Свойства.