Базовые операции таблиц и сущностей
· создание;
· извлечение с применением фильтров;
· обновление (только сущности);
· удаление;
· транзакции над группами сущностей в пределах таблицы и секции;
Расширенные операции над таблицами и сущностями:
· разбиение на страницы;
· обработка конфликтов параллельных обновлений.
В таблице представлены базовые операции таблиц и сущностей и соответствующие им интерфейсы программирования приложений.
Таблица 8.3. | ||||
Операция | ADO.NET Data Services | HTTP-команда | Ресурс | Описание |
Запрос | LINQ Query | GET | Таблица | Возвращает список всех таблиц данной учетной записи хранилища. В случае наличия фильтра таблицы возвращаются соответственно фильтру. |
Сущность | Возвращает все сущности заданной таблицы или подмножество сущностей, если задан фильтр. | |||
Обновление всей сущности | UpdateObject & SaveChanges(SaveChangesOptions.ReplaceOnUpdate) | PUT | Сущность | Обновляет значения свойств сущности. Операция PUT замещает всю сущность и может использоваться для удаления свойств. |
Частичное обновление сущности | UpdateObject & SaveChanges() | MERGE | Сущность | Обновляет значения свойств сущности. |
Создание новой таблицы/ сущности | AddObject & SaveChanges() | POST | Таблица | Создает новую таблицу в данной учетной записи хранилища. |
Сущность | Вставляет новую сущность в данную таблицу. | |||
Удаление таблицы/ сущности | DeleteObject & SaveChanges() | DELETE | Таблица | Удаляет таблицу в данной учетной записи хранилища. |
Сущность | Удаляет сущность из данной таблицы. | |||
Транзакция над группой сущностей | SaveChanges(SaveChangesOptions.Batch) | POST | $batch | Поддержка транзакции над группой сущностей обеспечивается посредством пакетной операции над сущностями одной таблицы с одинаковым ключом секции. В ADO.NET Data Services опция SaveChanges требует, чтобы запрос выполнялся как одна транзакция. |
Класс сущностей
Схема таблицы описывается как C#-класс. Такую модель использует ADO.NET Data Services. Схема известна только клиентскому приложению и упрощает доступ к данным. Сервер схему не применяет.
Для примера рассмотрим работу с таблицей контактов - Contact.
Рассмотрим описание сущностей Contact, хранящихся в таблице Contacts. Каждая сущность содержит следующие данные:
1. Группа контактов - Group ;
2. Имя контакта - NameOf ;
3. Дату создания контакта - DateOf ;
4. Адрес электронной почты - Email ;
5. Комментарии - Comment.
Для данной таблицы "Contacts" в качестве ключа секции используется Group, а в качестве ключа строки – Name Of. Partition Key и RowKey – ключи таблицы Contacts, они объявляются посредством атрибута класса DataServiceKey (Ключ сервиса данных). Кроме ключей, в качестве свойств объявлены характерные для данного вида сущностей атрибуты. Все свойства имеют открытые (public) методы считывания и присвоения значения и хранятся в таблице Windows Azure Table. Итак, в примере ниже:
public class Contacts
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public datetime DateOf { get; set; }
public String Email { get; set; }
public String Comments { get; set; }
}
Создание таблиц
Далее рассмотрим, как создать таблицу Contacts для учетной записи хранилища. Создание таблицы аналогично созданию сущности в основной таблице "Tables". Эта основная таблица определена для каждой учетной записи хранилища, и имя каждой таблицы, используемой учетной записью хранения, должно быть зарегистрировано в основной таблице. Описание класса основной таблицы приведено ниже, где свойство TableName (Имя таблицы) представляет имя создаваемой таблицы.
public class TableStorageTable
{ public string TableName { get; set; }
}
Фактическое создание таблицы происходит следующим образом:
// Uri сервиса: "http://<Account>.table.core.windows.net/"
DataServiceContext context = new DataServiceContext(serviceUri);
TableStorageTable table = new TableStorageTable("Contacts ");
// Создаем новую таблицу, добавляя новую сущность
// в основную таблицу "Tables"
context.AddObject("Tables", table);
// результатом вызова SaveChanges является отклик сервера
DataServiceResponse response = context.SaveChanges();
serviceUri – это uri сервиса таблицы, http://<Здесь указывается имя учетной записи>.table.core.windows.net/.DataServiceContext (Контекст сервиса данных) – один из основных классов сервиса данных ADO.NET, представляющий контекст времени выполнения для сервиса. Он обеспечивает API для вставки, обновления, удаления и запроса сущностей с помощью либо LINQ, либо RESTful URI и сохраняет состояние на стороне клиента. Более подробный пример работы с Windows Azure Table, начиная от создания приложения, будет рассмотрен в рамках соответствующего практического занятия.
Дата добавления: 2016-03-05; просмотров: 1200;