Работа с 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>
