Работа с Windows Azure Table
Интерфейc
Создадим веб - форму для работы с нашим контакт - листом.
Внешний вид веб формы
Задача 1. Добавление данных в таблицу
В обозревателе решений найдите файл Global.asax.cs. В метод Application_Start необходимо добавить код создания таблицы, в случае если она не была создана до этого:
void Application_Start(object sender, EventArgs e) { CloudStorageAccount.SetConfigurationSettingPublisher( (configName, configSettingPublisher) => { var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName); configSettingPublisher(connectionString); } ); var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); //создание таблицы Windows Azure Table CloudTableClient _tc = null; _tc = account.CreateCloudTableClient(); _tc.CreateTableIfNotExist("Contacts"); }
Далее в обработчике события нажатия кнопки "AddContact" необходимо создать аккаунт для подключения к хранилищу, используя параметр строки подключения "DataConnection String" . После этого, для непосредственного добавления данных в таблицу нам понадобится экземпляр класса - контекса. Вызвав метод "Add" данного класса (листинг 17.1) мы добавим строку в таблицу, передав в качестве параметра экземпляр класса "Contact" . Обратите внимание, в классе Contact мы не описывали необходимые параметры для добавления строки в таблицу (ключ секции и ключ строки), класс унаследовал их от родителя. В качестве значения ключа секции зададим произвольную строку, в качестве ключа строки будем использовать сочетание "Last Name + First Name" .
protected void btn_add_Click(object sender, EventArgs e) { var statusMessage = String.Empty; try { var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); var context = new ContactContext(account.TableEndpoint, account.Credentials); context.Add(new Contact { PartitionKey = "MyContacts", RowKey = this.tb_lastname.Text + " " + this.tb_firstname.Text, FirstName = tb_firstname.Text, LastName = tb_lastname.Text, TelNumber = tb_telnum.Text, Email = tb_email.Text }); } catch (DataServiceRequestException ex) { statusMessage = "Unable to connect to the table storage server. Please check that the service is running.<br>" + ex.Message; } lb_status.Text = statusMessage; }
Запустив отладку приложения, введем необходимые данные в появившуюся веб - форму и нажмем кнопку "Add Contact".
asp - код веб - формы данной задачи:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AzureTable.aspx.cs" Inherits="WebRole1.AzureTable" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> .style1 { width: 169px; } </style> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="NameOfExample" runat="server" Font-Bold="True" Font-Italic="False" Font-Size="Larger" Font-Strikeout="False" Font-Underline="False" Text="My Contact List - Windows Azure Table Example"></asp:Label> <br /> <br /> <asp:Label ID="ContactLabel" runat="server" Text="Contact:"></asp:Label> <br /> <table style="width:100%;"> <tr> <td class="style1"> </td> <td> </td> </tr> <tr> <td class="style1"> <asp:Label ID="lb_firstname" runat="server" Text="First Name"></asp:Label> </td> <td> <asp:TextBox ID="tb_firstname" runat="server"></asp:TextBox> </td> </tr> <tr> <td class="style1"> <asp:Label ID="lb_lastname" runat="server" Text="Last Name"></asp:Label> </td> <td> <asp:TextBox ID="tb_lastname" runat="server"></asp:TextBox> </td> </tr> <tr> <td class="style1"> <asp:Label ID="lb_telnum" runat="server" Text="Telephone Number"></asp:Label> </td> <td> <asp:TextBox ID="tb_telnum" runat="server"></asp:TextBox> </td> </tr> <tr> <td class="style1"> <asp:Label ID="lb_email" runat="server" Text="E-mail"></asp:Label> </td> <td> <asp:TextBox ID="tb_email" runat="server"></asp:TextBox> </td> </tr> <tr> <td class="style1"> </td> <td> </td> </tr> <tr> <td class="style1"> </td> <td> <asp:Button ID="btn_add" runat="server" Height="20px" Text="Add Contact" /> </td> </tr> <tr> <td class="style1"> <asp:Label ID="lb_status" runat="server"></asp:Label> </td> <td> </td> </tr> </table> </div> </form> </body> </html>