Цель лекции: изучить механизм подключения к источникам данных и принципы создания различных типов запросов к данным в приложениях LightSwitch.
Как было описано ранее, LightSwitch ориентировано на создание приложений, основанных на данных. Поэтому вопросы, связанные с использованием различных источников данных имеют первостепенное значение. В этой лекции нами будут рассмотрены вопросы доступа к внешним источникам данным, использования данных внутри дизайнера приложения, настройка и добавление подключений через дизайнеры, программный код или запросы Linq.
Приоритетным источником данных является Microsoft SOL Server, но внешние источники данных не ограничиваются только им. В стандартных настройках можно использовать SharePoint списки, WCF
Как уже указывалось, приложения LightSwitch, имеют трехуровневую архитектуру. На уровне пользовательского интерфейса приоритетом является обеспечение эффективного взаимодействия с пользователем. Данные поставляет уровень бизнес-логики с помощью специальных сервисов данных, первичная работа данных сервисов заключается в чтении данных из хранилища, а затем, по запросу пользователя, контроль их корректности и сохранение в хранилище (рис 11.1).
(рис 11.1) Трехуровневая структура приложения
В таблице 11.1 систематизированы возможные источники данных LightSwitch.
| Служба доступа к данным | Провайдер данных | Поддерживаемые функции | Не поддерживаемые функции |
|---|---|---|---|
| Microsoft SQL Server
SQL Server 2005 SQL Server 2008 SQL Server 2008 R2 | Sql Client for the Entity Framework | Ссылочная целостность
Транзакции Аутентификация SQL Интегрированная аутентификация Windows | SQL Server Compact
Хранимые процедуры |
| Microsoft SQL Azure | Sql Client for the Entity Framework | Ссылочная целостность
Транзакции Аутентификация SQL | Хранимые процедуры
Интегрированная аутентификация Windows Аутентификация Azure |
| Microsoft SharePoint
SharePoint 2010 | OData client Data Service Context | Списки
Отношения между таблицами | Транзакции |
| Other ( | Требует создания WCF | Транзакции
Запросы с параметрами | Сборные типы
Включенные запросы |
При создании нового источника данных, например, если в проект добавляется таблица или выполняется подключение к внешнему источнику данных, LightSwitch автоматически создает необходимую промежуточную службу данных и конфигурирует провайдер данных. Для внутренних данных создается специальный источник данных, называемый ApplicationData. Для других источников имя определяется именем исходного источника данных.
LightSwitch обладает собственной моделью данных, которая основана на CLR, но имеет ряд особенностей и их необходимо учитывать в ходе разработки приложений ( таблица 11.2).
| LightSwitch тип данных | VB тип данных | C# тип данных | Диапазон |
|---|---|---|---|
Binary | Byte() | byte[] | от 0 до 255 |
Boolean | Boolean | bool | True или False |
Byte | Byte | byte | 0 до 255 |
Date | Date | DateTime | Январь 1, 0001 AD (CE) to Декабрь 31, 9999 AD (CE) |
DateTime | Date | DateTime | 00:00:00 Январь 1, 0001 AD (CE) to
23:59:59 Декабрь 31, 9999 AD (CE) |
Decimal | Decimal | decimal | ±1.0e-28 до ±7.9e28 |
Double | Double | double | ±5.0e-324 до ±1.7e308 |
Guid | Guid | Guid | {00000000-0000-0000-0000-000000000000} до {FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF} |
Int16 | Short | short | -32,768 до 32,767 |
Int32 | Integer | int | -2,147,483,648 до 2,147,483,647 |
Int64 | Long | long | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
SByte | SByte | sbyte | -128 to 127 |
Single | Single | float | ±1.5e-45 to ±3.4e38 |
String | String | string | A sequence of zero or more Unicode characters (последовательность из 0 или более символов Unicode) |
TimeSpan | TimeSpan | TimeSpan | ±10675199.02:48:05.4775807 |
Ряд типов LightSwitch (Date, Email Address) относятся к семантическим типам. Они не являются особыми типами, но поддерживают специальное форматирование, отображение и проверку правильности.
Все простые и семантические типы поддерживают пустое значение Null. Эти типы данных представлены в обычных языках программирования как datatype? (со знаком вопроса в конце). В коде LightSwitch использует запись для таких типов данных как и в языках VB и С#, например, Integer? или Int?.
Наиболее часто используется в качестве источника данных SQL server, в том числе и внутренние данные также хранятся в SQL Server Express. Для доступа к данным SQL server используется SQL Client for Entity Framework провайдер. Аналогичный провайдер используется и для доступа к SQL Azure. При этом для подключения используется стандартная строка подключения.
LightSwitch не поддерживает использования хранимых процедур SQL Server. Также игнорируются все, кроме таблиц, объекты базы данных, такие как триггеры, пользовательские типы. При необходимости доступ и к хранимым процедурам и к другим объектам можно получить, если реализовать и использовать для получения данных LightSwitch службы WCF RIA Domain Service.
В ходе разработки следует учитывать, что ряд типов данных SQL Server не соответствует типам LightSwitch и при их использовании происходит их преобразование. Подробнее об этом в случае необходимости можно узнать из справочной системы.
Как уже указывалось, для внутренних нужд LightSwitch может использовать источник данных ApplicationData. В базе данных этого источника сохраняются элементы данных, определенные внутри приложения, в противоположность данным, экспортированным из внешних источников. В режиме разработки эта база данных охраняется на установленном со средой LightSwitch Microsoft SQL Server Express. В рабочем режиме эта база данных может быть развернута на полноценном сервере Microsoft SQL Server или SQL Azure. Следует помнить, что при развертывании происходит перенос только схемы базы данных, перенос сохраненных во время разработки приложения данных требует специальных действий.
В ходе разработки базы данных LightSwitch определяет модель данных и связи между ними. На основе этой модели генерируется схема данных, которая может быть использована для создания таблиц и отношений.
Следует учитывать, что ряд типов базы данных SQL Server, таких, как Byte, SByte, Single и TimeSpan не поддерживаются в LightSwitch. Свойство Обязательно дизайнера сущностей преобразуется в Not Null свойство базы данных. Дизайнер LightSwitch поддерживает первичные и внешние ключи, для каждой новой таблицы автоматически создается первичный ключ с именем ID типа Int32, для связанных таблиц создаются скрытые внешние ключи в отношении 1:1 или 1:?. Связи приносятся в базу данных с созданием соответствующих
Интересной особенностью LightSwitch является возможность изменения структуры базы данных после ее публикации, при этом переносятся только изменения, произошедшие в базе с момента ее последней публикации.
Для поддержки аутентификации Windows или аутентификации на основе форм LightSwitch поддерживает необходимые для хранения пользователей и ролей таблицы.
Эти таблицы входят во внутреннюю базу данных, при этом поддерживается ASP.Net SQL Membership provider. Также LightSwitch поддерживает концепцию разрешения для ролей. Разрешения определяют, какие права и для каких объектов имеет определенная роль. После развертывания пользователь Администратор имеет возможность управлять разрешениями, группами и пользователями.
У нового проекта исходно имеется один источник данных ApplicationData, который представляет внутренний источник данных. Если базы еще данных нет, то она может быть последовательно создана в конструкторе LightSwitch во внутреннем источнике данных.
Для этого необходимо правым щелчком мыши по ).
(рис 11.2) Создание новой таблицы
Автоматически в таблице создается ключевое поле ID, определяющее внутренний идентификатор каждой записи. Это поле будет использоваться как ключевое. Остальные поля необходимо дописать в таблице, выбрать их тип и для обязательных установить флажок Обязательно.
В панели свойств можно установить дополнительные характеристики для создаваемых полей (рис 11.3).
(рис 11.3) Свойства полей
Кнопка Список значений позволяет задать выпадающий список для выбора нужного значения.
Кнопка Настраиваемая проверка запускает редактор кода в котором можно определить условия правильности вводимым в поле значений и обеспечить возможность добавления только соответствующих значений.
В конструкторе таблиц в секции Добавить, можно выбрать:
Вычисляемое свойство, это особый тип для таблиц LightSwitch, который динамически рассчитывается на основе других значений данной таблицы.
(рис 11.4) Определение вычисляемого свойства
Сам расчет вычисляемого значения выполняется в коде программы:
partial void ФИОСтудента_Compute(ref string result)
{
// Присвоение результату значения нужного поля
result = ФамилияСтудента + ' ' + ИмяСтудента + ' ' + ОтчествоСтудента;
}
В дальнейшем вычисляемое поле может использоваться наравне с другими и отображается на экранах, без возможности изменения его значения.
Разработка базы данных подразумевает установление отношений между созданными таблицами. Для этого в LightSwitch используется специальное диалоговое окно (рис 11.5):
(рис 11.5) Определение связей
Это окно позволяет выбрать связываемые таблицы и тип связей между ними (отношение многие – ко – многим не поддерживается). Тут же устанавливается поведение при удалении, возможны два варианта:
Большое внимание разработчики LightSwitch уделили механизмам отбора записей из источников данных. Ими были использованы лучшие наработки других Object Relation mapping (ORM) и реализован как концептуально эффективный, так интерфейсно удобный механизм создания запросов. В его основе лежат запросы двух видов:
Запросы уровня экрана связывают через общие переменные различные элементы экрана, обеспечивая механизм стандартного просмотра Мастер - Подробности.
Запрос уровня экрана строится на основе данных экрана, которые добавляются в момент создания экрана. Для создания запроса используется специальный дизайнер. Рассмотрим на примере создания такого типа запросов.
Рядом с именем источника данных расположена кнопка редактор запроса, которая запускает специальный дизайнер запросов для данных экрана (рис 11.6).
(рис 11.6) Создание фильтра для запроса
В этом дизайнере можно создавать критерии фильтрации данных, а также определять способ сортировки. Критерии могут быть основаны на фиксированных значениях их достаточно просто указать. Более общий случай состоит в использовании параметров. Для создания параметра можно использовать раздел Параметры, где с помощью ссылки Добавить параметр. Обычное условие фильтрации состоит из следующих частей:
<=; =; >= и др.).@ (другие элементы списка Литерал, Свойство и Параметр).После создания фильтра с параметром уровня экрана в конструкторе экрана необходимо создать переменную. В ней будет сохраняться значение параметра, и через нее будет осуществляться передача параметра в фильтр.
Для создания переменной используется кнопка ).
(рис 11.7) Создание локального свойства
В этом окне необходимо выбрать переключатель Локальное свойство, определить тип переменной и задать ее имя (имя может точно соответствовать названию параметра для удобства).
Затем необходимо связать переменную и свойство из фильтра. Для этого необходимо выделить параметр в списке данных экрана (слева от дерева экрана) и в окне ).
(рис 11.8) Привязка параметра и переменной
В списке данных экрана переменная и параметр станут связанными стрелочкой. Затем созданную переменную можно использовать в коде программы и ее значение будет передаваться в связанный с ней параметр (рис 11.10).
(рис 11.9) Связь между параметром и переменной
На основе описанного подхода можно реализовывать эффективный для баз данных интерфейс вида Мастер – Подробности, кода значения из главной таблицы выбираются из списка, а в подчиненных таблице с помощью таблицы данных отображаются только связанные с выбранным значением данные.
Кроме того, локальная переменная имеет свойство Является параметром. Если установить это свойство, то можно добиться того, чтобы представляла собой глобальный параметр экрана, что позволит использовать ее из других экранов. Эта возможность может быть задействована, когда связанные таблицы располагаются на различных экранах. С использованием глобальной экранной переменной можно обеспечить фильтрацию в подчиненном экране в зависимости от значений, выбранных на главном экране.
Другой тип запросов – запросы уровня сущности. Их можно отнести к глобальным, так как они носят общий для всего проекта характер и могут быть использованы различными экранами. Как и запросы уровня экрана, данный тип запросов может иметь критерии фильтрации и сортировки, а также обладать параметрами.
Создать такой тип запросов можно двумя способами:
Любой из способов приведет к запуску редактора запросов, аналогичного Запросам уровня экрана с такими же возможностями. После своего создания запросы уровня сущности будут отображаться в раскрывающемся списке под своей сущностью (рис 11.11).
(рис 11.10) Создание запроса уровня сущности
На основе такого запроса уровня сущности можно создать экран, так же как и на основе самой сущности. Для этого нужно вызвать команду Добавить экран и выбрать в качестве источника данных требуемый запрос. В событии InitializeDataWorkspace можно установить необходимое значение для локального свойства через которое происходит передача параметра.
partial void ВсеЗаданныеОценкиGrid_InitializeDataWorkspace(List<IDataService> saveChangesTo)
{
// Добавьте сюда свой код.
ОценкиЗаСеместрЗначениеОценки = "Отлично";
}
Преимущество применения запросов уровня сущности заключается в возможности их многократного использования для различных экранов. Кроме того, при добавлении экрана на основе такого запроса автоматически происходит создание локальных переменных и их связывание параметрами запроса. Это сокращает количество необходимых действий по настройке экрана и снижает вероятность возникновения ошибок.
Для подключения внешнего источника данных необходимо вызвать команду ).
(рис 11.11) Внешний источник данных
Выбрав нужный тип источника можно переходить к его настройке. Для SQL Server это будет стандартное окно подключения к базе данных (рис 11.12).
(рис 11.12) Подключение к базе данных
Для других источников также выводятся специальные окна настройки подключения. Рассмотрим принципы использования других источников данных помимо SQL Server и SQL Server Azure.
Наиболее универсальным провайдером данных является служба WCF
При этом, в ходе создания сервиса WCF Domain Service с атрибутом Query. WCF
Еще одним стандартным источником данных могут быть списки SharePoint. Microsoft ориентирует SharePoint как внутрикорпоративное хранилище информации и возможность получения информации из этого хранилища является важной функцией. Для подключения необходимо, чтобы на сервере была установлена версия SharePoint 2010 с установленными службами WCF
Null. Цель лекции: изучить механизм подключения к источникам данных и принципы создания различных типов запросов к данным в приложениях LightSwitch.
Как было описано ранее, LightSwitch ориентировано на создание приложений, основанных на данных. Поэтому вопросы, связанные с использованием различных источников данных имеют первостепенное значение. В этой лекции нами будут рассмотрены вопросы доступа к внешним источникам данным, использования данных внутри дизайнера приложения, настройка и добавление подключений через дизайнеры, программный код или запросы Linq.
Приоритетным источником данных является Microsoft SOL Server, но внешние источники данных не ограничиваются только им. В стандартных настройках можно использовать SharePoint списки, WCF
Как уже указывалось, приложения LightSwitch, имеют трехуровневую архитектуру. На уровне пользовательского интерфейса приоритетом является обеспечение эффективного взаимодействия с пользователем. Данные поставляет уровень бизнес-логики с помощью специальных сервисов данных, первичная работа данных сервисов заключается в чтении данных из хранилища, а затем, по запросу пользователя, контроль их корректности и сохранение в хранилище (рис 11.1).
(рис 11.1) Трехуровневая структура приложения
В таблице 11.1 систематизированы возможные источники данных LightSwitch.
| Служба доступа к данным | Провайдер данных | Поддерживаемые функции | Не поддерживаемые функции |
|---|---|---|---|
| Microsoft SQL Server
SQL Server 2005 SQL Server 2008 SQL Server 2008 R2 | Sql Client for the Entity Framework | Ссылочная целостность
Транзакции Аутентификация SQL Интегрированная аутентификация Windows | SQL Server Compact
Хранимые процедуры |
| Microsoft SQL Azure | Sql Client for the Entity Framework | Ссылочная целостность
Транзакции Аутентификация SQL | Хранимые процедуры
Интегрированная аутентификация Windows Аутентификация Azure |
| Microsoft SharePoint
SharePoint 2010 | OData client Data Service Context | Списки
Отношения между таблицами | Транзакции |
| Other ( | Требует создания WCF | Транзакции
Запросы с параметрами | Сборные типы
Включенные запросы |
При создании нового источника данных, например, если в проект добавляется таблица или выполняется подключение к внешнему источнику данных, LightSwitch автоматически создает необходимую промежуточную службу данных и конфигурирует провайдер данных. Для внутренних данных создается специальный источник данных, называемый ApplicationData. Для других источников имя определяется именем исходного источника данных.
LightSwitch обладает собственной моделью данных, которая основана на CLR, но имеет ряд особенностей и их необходимо учитывать в ходе разработки приложений ( таблица 11.2).
| LightSwitch тип данных | VB тип данных | C# тип данных | Диапазон |
|---|---|---|---|
Binary | Byte() | byte[] | от 0 до 255 |
Boolean | Boolean | bool | True или False |
Byte | Byte | byte | 0 до 255 |
Date | Date | DateTime | Январь 1, 0001 AD (CE) to Декабрь 31, 9999 AD (CE) |
DateTime | Date | DateTime | 00:00:00 Январь 1, 0001 AD (CE) to
23:59:59 Декабрь 31, 9999 AD (CE) |
Decimal | Decimal | decimal | ±1.0e-28 до ±7.9e28 |
Double | Double | double | ±5.0e-324 до ±1.7e308 |
Guid | Guid | Guid | {00000000-0000-0000-0000-000000000000} до {FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF} |
Int16 | Short | short | -32,768 до 32,767 |
Int32 | Integer | int | -2,147,483,648 до 2,147,483,647 |
Int64 | Long | long | -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 |
SByte | SByte | sbyte | -128 to 127 |
Single | Single | float | ±1.5e-45 to ±3.4e38 |
String | String | string | A sequence of zero or more Unicode characters (последовательность из 0 или более символов Unicode) |
TimeSpan | TimeSpan | TimeSpan | ±10675199.02:48:05.4775807 |
Ряд типов LightSwitch (Date, Email Address) относятся к семантическим типам. Они не являются особыми типами, но поддерживают специальное форматирование, отображение и проверку правильности.
Все простые и семантические типы поддерживают пустое значение Null. Эти типы данных представлены в обычных языках программирования как datatype? (со знаком вопроса в конце). В коде LightSwitch использует запись для таких типов данных как и в языках VB и С#, например, Integer? или Int?.
Наиболее часто используется в качестве источника данных SQL server, в том числе и внутренние данные также хранятся в SQL Server Express. Для доступа к данным SQL server используется SQL Client for Entity Framework провайдер. Аналогичный провайдер используется и для доступа к SQL Azure. При этом для подключения используется стандартная строка подключения.
LightSwitch не поддерживает использования хранимых процедур SQL Server. Также игнорируются все, кроме таблиц, объекты базы данных, такие как триггеры, пользовательские типы. При необходимости доступ и к хранимым процедурам и к другим объектам можно получить, если реализовать и использовать для получения данных LightSwitch службы WCF RIA Domain Service.
В ходе разработки следует учитывать, что ряд типов данных SQL Server не соответствует типам LightSwitch и при их использовании происходит их преобразование. Подробнее об этом в случае необходимости можно узнать из справочной системы.
Как уже указывалось, для внутренних нужд LightSwitch может использовать источник данных ApplicationData. В базе данных этого источника сохраняются элементы данных, определенные внутри приложения, в противоположность данным, экспортированным из внешних источников. В режиме разработки эта база данных охраняется на установленном со средой LightSwitch Microsoft SQL Server Express. В рабочем режиме эта база данных может быть развернута на полноценном сервере Microsoft SQL Server или SQL Azure. Следует помнить, что при развертывании происходит перенос только схемы базы данных, перенос сохраненных во время разработки приложения данных требует специальных действий.
В ходе разработки базы данных LightSwitch определяет модель данных и связи между ними. На основе этой модели генерируется схема данных, которая может быть использована для создания таблиц и отношений.
Следует учитывать, что ряд типов базы данных SQL Server, таких, как Byte, SByte, Single и TimeSpan не поддерживаются в LightSwitch. Свойство Обязательно дизайнера сущностей преобразуется в Not Null свойство базы данных. Дизайнер LightSwitch поддерживает первичные и внешние ключи, для каждой новой таблицы автоматически создается первичный ключ с именем ID типа Int32, для связанных таблиц создаются скрытые внешние ключи в отношении 1:1 или 1:?. Связи приносятся в базу данных с созданием соответствующих
Интересной особенностью LightSwitch является возможность изменения структуры базы данных после ее публикации, при этом переносятся только изменения, произошедшие в базе с момента ее последней публикации.
Для поддержки аутентификации Windows или аутентификации на основе форм LightSwitch поддерживает необходимые для хранения пользователей и ролей таблицы.
Эти таблицы входят во внутреннюю базу данных, при этом поддерживается ASP.Net SQL Membership provider. Также LightSwitch поддерживает концепцию разрешения для ролей. Разрешения определяют, какие права и для каких объектов имеет определенная роль. После развертывания пользователь Администратор имеет возможность управлять разрешениями, группами и пользователями.
У нового проекта исходно имеется один источник данных ApplicationData, который представляет внутренний источник данных. Если базы еще данных нет, то она может быть последовательно создана в конструкторе LightSwitch во внутреннем источнике данных.
Для этого необходимо правым щелчком мыши по ).
(рис 11.2) Создание новой таблицы
Автоматически в таблице создается ключевое поле ID, определяющее внутренний идентификатор каждой записи. Это поле будет использоваться как ключевое. Остальные поля необходимо дописать в таблице, выбрать их тип и для обязательных установить флажок Обязательно.
В панели свойств можно установить дополнительные характеристики для создаваемых полей (рис 11.3).
(рис 11.3) Свойства полей
Кнопка Список значений позволяет задать выпадающий список для выбора нужного значения.
Кнопка Настраиваемая проверка запускает редактор кода в котором можно определить условия правильности вводимым в поле значений и обеспечить возможность добавления только соответствующих значений.
В конструкторе таблиц в секции Добавить, можно выбрать:
Вычисляемое свойство, это особый тип для таблиц LightSwitch, который динамически рассчитывается на основе других значений данной таблицы.
(рис 11.4) Определение вычисляемого свойства
Сам расчет вычисляемого значения выполняется в коде программы:
partial void ФИОСтудента_Compute(ref string result)
{
// Присвоение результату значения нужного поля
result = ФамилияСтудента + ' ' + ИмяСтудента + ' ' + ОтчествоСтудента;
}
В дальнейшем вычисляемое поле может использоваться наравне с другими и отображается на экранах, без возможности изменения его значения.
Разработка базы данных подразумевает установление отношений между созданными таблицами. Для этого в LightSwitch используется специальное диалоговое окно (рис 11.5):
(рис 11.5) Определение связей
Это окно позволяет выбрать связываемые таблицы и тип связей между ними (отношение многие – ко – многим не поддерживается). Тут же устанавливается поведение при удалении, возможны два варианта:
Большое внимание разработчики LightSwitch уделили механизмам отбора записей из источников данных. Ими были использованы лучшие наработки других Object Relation mapping (ORM) и реализован как концептуально эффективный, так интерфейсно удобный механизм создания запросов. В его основе лежат запросы двух видов:
Запросы уровня экрана связывают через общие переменные различные элементы экрана, обеспечивая механизм стандартного просмотра Мастер - Подробности.
Запрос уровня экрана строится на основе данных экрана, которые добавляются в момент создания экрана. Для создания запроса используется специальный дизайнер. Рассмотрим на примере создания такого типа запросов.
Рядом с именем источника данных расположена кнопка редактор запроса, которая запускает специальный дизайнер запросов для данных экрана (рис 11.6).
(рис 11.6) Создание фильтра для запроса
В этом дизайнере можно создавать критерии фильтрации данных, а также определять способ сортировки. Критерии могут быть основаны на фиксированных значениях их достаточно просто указать. Более общий случай состоит в использовании параметров. Для создания параметра можно использовать раздел Параметры, где с помощью ссылки Добавить параметр. Обычное условие фильтрации состоит из следующих частей:
<=; =; >= и др.).@ (другие элементы списка Литерал, Свойство и Параметр).После создания фильтра с параметром уровня экрана в конструкторе экрана необходимо создать переменную. В ней будет сохраняться значение параметра, и через нее будет осуществляться передача параметра в фильтр.
Для создания переменной используется кнопка ).
(рис 11.7) Создание локального свойства
В этом окне необходимо выбрать переключатель Локальное свойство, определить тип переменной и задать ее имя (имя может точно соответствовать названию параметра для удобства).
Затем необходимо связать переменную и свойство из фильтра. Для этого необходимо выделить параметр в списке данных экрана (слева от дерева экрана) и в окне ).
(рис 11.8) Привязка параметра и переменной
В списке данных экрана переменная и параметр станут связанными стрелочкой. Затем созданную переменную можно использовать в коде программы и ее значение будет передаваться в связанный с ней параметр (рис 11.10).
(рис 11.9) Связь между параметром и переменной
На основе описанного подхода можно реализовывать эффективный для баз данных интерфейс вида Мастер – Подробности, кода значения из главной таблицы выбираются из списка, а в подчиненных таблице с помощью таблицы данных отображаются только связанные с выбранным значением данные.
Кроме того, локальная переменная имеет свойство Является параметром. Если установить это свойство, то можно добиться того, чтобы представляла собой глобальный параметр экрана, что позволит использовать ее из других экранов. Эта возможность может быть задействована, когда связанные таблицы располагаются на различных экранах. С использованием глобальной экранной переменной можно обеспечить фильтрацию в подчиненном экране в зависимости от значений, выбранных на главном экране.
Другой тип запросов – запросы уровня сущности. Их можно отнести к глобальным, так как они носят общий для всего проекта характер и могут быть использованы различными экранами. Как и запросы уровня экрана, данный тип запросов может иметь критерии фильтрации и сортировки, а также обладать параметрами.
Создать такой тип запросов можно двумя способами:
Любой из способов приведет к запуску редактора запросов, аналогичного Запросам уровня экрана с такими же возможностями. После своего создания запросы уровня сущности будут отображаться в раскрывающемся списке под своей сущностью (рис 11.11).
(рис 11.10) Создание запроса уровня сущности
На основе такого запроса уровня сущности можно создать экран, так же как и на основе самой сущности. Для этого нужно вызвать команду Добавить экран и выбрать в качестве источника данных требуемый запрос. В событии InitializeDataWorkspace можно установить необходимое значение для локального свойства через которое происходит передача параметра.
partial void ВсеЗаданныеОценкиGrid_InitializeDataWorkspace(List<IDataService> saveChangesTo)
{
// Добавьте сюда свой код.
ОценкиЗаСеместрЗначениеОценки = "Отлично";
}
Преимущество применения запросов уровня сущности заключается в возможности их многократного использования для различных экранов. Кроме того, при добавлении экрана на основе такого запроса автоматически происходит создание локальных переменных и их связывание параметрами запроса. Это сокращает количество необходимых действий по настройке экрана и снижает вероятность возникновения ошибок.
Для подключения внешнего источника данных необходимо вызвать команду ).
(рис 11.11) Внешний источник данных
Выбрав нужный тип источника можно переходить к его настройке. Для SQL Server это будет стандартное окно подключения к базе данных (рис 11.12).
(рис 11.12) Подключение к базе данных
Для других источников также выводятся специальные окна настройки подключения. Рассмотрим принципы использования других источников данных помимо SQL Server и SQL Server Azure.
Наиболее универсальным провайдером данных является служба WCF
При этом, в ходе создания сервиса WCF Domain Service с атрибутом Query. WCF
Еще одним стандартным источником данных могут быть списки SharePoint. Microsoft ориентирует SharePoint как внутрикорпоративное хранилище информации и возможность получения информации из этого хранилища является важной функцией. Для подключения необходимо, чтобы на сервере была установлена версия SharePoint 2010 с установленными службами WCF
Null. Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.