Настройка хранилища разработки в Visual Studio 2010
Нам необходим класс, который будет описывать структуру сущности для нашей таблицы. Класс должен быть наследником Microsoft.WindowsAzure.StorageClient.TableServiceEntity
class Address : TableServiceEntity { public String address { get; set; } public String firm { get; set; } public String telephone { get; set; } }
Для создания таблиц необходимо определить класс - контекст, при чем:
класс должен быть наследником TableServiceContext
Для каждой таблицы необходимо определить свойство типа IQueryable, где значение параметра DataItemType - тип сущностей, хранимых в таблице, в нашем случае - Address.
class AddressConext: TableServiceContext { public IQueryable<Address> ContactData { get { return this.CreateQuery<Address>("Address"); } } public AddressConext(Uri baseAddress, StorageCredentials credentials) : base(baseAddress.AbsoluteUri, credentials) { } }
Теперь обратим внимание на методы Run и OnStart. Первый содержит код выполняемый в ходе работы роли, второй - при ее запуске.
Для того, чтобы добавить данные в таблицу нам необходимо в методе Run:
- создать экземпляр класса - учетной записи
- создать экземпляр класс - контекста
- создать экземпляр класса - сущности и задать его параметры
- создать таблицу Address, если она не существует
- добавить сущность в таблицу
Добавим следующий код:
CloudStorageAccount.SetConfigurationSettingPublisher( (configName, configSettingPublisher) => { var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName); configSettingPublisher(connectionString); } ); //определение учетной записи CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); //создание таблицы Windows Azure Table CloudTableClient _tc = null; _tc = account.CreateCloudTableClient(); _tc.CreateTableIfNotExist("Address"); /*определение сущности, в том числе свойств ключ строки и ключ секции, унаследованных от родительского TableServiceEntity*/ Address adrs = new Address(); adrs.PartitionKey = "Firm"; adrs.RowKey = "Test entity"; adrs.telephone = "xxx-xx-xx"; adrs.address = "Evergreen Terrace 247"; adrs.firm = "My new firm"; //определение контекста AddressConext context = new AddressConext(account.TableEndpoint, account.Credentials); //добавление сущности таблице Address context.AddObject("Address", adrs); //сохранение изменений context.SaveChanges();
Запустите приложение, убедитесь в том, что оно выполнилось без ошибок и остановите его.
В диспетчере серверов, во вкладке "Хранилище Windows Azure" обновите вкладку "Таблицы", вы увидите созданную нашим приложением таблицу Address.
Щелкните на таблице правой кнопкой мыши и выберите "Просмотреть данные". Вы увидите, что определенная нами сущность добавлена в таблицу.
Более подробно работа с Хранилищем Windows Azure будет рассмотрена в последующих практических работах.
В случае, если выполнение задания вызвало сложности и затруднения, в приложениях к данной практической работе вы найдете итоговый программный код.