Использование источников данных в приложениях LightSwitch 2011
Цель лекции: изучить механизм подключения к источникам данных и принципы создания различных типов запросов к данным в приложениях LightSwitch.
Как было описано ранее, LightSwitch ориентировано на создание приложений, основанных на данных. Поэтому вопросы, связанные с использованием различных источников данных имеют первостепенное значение. В этой лекции нами будут рассмотрены вопросы доступа к внешним источникам данным, использования данных внутри дизайнера приложения, настройка и добавление подключений через дизайнеры, программный код или запросы Linq.
Приоритетным источником данных является Microsoft SOL Server, но внешние источники данных не ограничиваются только им. В стандартных настройках можно использовать SharePoint списки, WCF RIA Service, а в дальнейшем обещают появление сторонних провайдеров для других источников данных.
Как уже указывалось, приложения LightSwitch, имеют трехуровневую архитектуру. На уровне пользовательского интерфейса приоритетом является обеспечение эффективного взаимодействия с пользователем. Данные поставляет уровень бизнес-логики с помощью специальных сервисов данных, первичная работа данных сервисов заключается в чтении данных из хранилища, а затем, по запросу пользователя, контроль их корректности и сохранение в хранилище ( рис. 11.1).
В таблице 11.1 систематизированы возможные источники данных LightSwitch.
При создании нового источника данных, например, если в проект добавляется таблица или выполняется подключение к внешнему источнику данных, 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 |
EmailAddress | String | string | |
Guid | Guid | Guid | {00000000-0000-0000-0000-000000000000} до {FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF} |
Image | Byte() | byte[] | |
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 |
Money | Decimal | decimal | |
PhoneNumber | String | string | |
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 во внутреннем источнике данных.