Когда я изучаю новые технологии, мне нравится писать простейший возможный пример. Обычно это означает консольное приложение с наименьшим количеством ссылок. Я пытался с успехом написать приложение, которое читает и записывает в хранилище таблиц Azure. Я использовал этот, как руководство, как основу, но стараюсь делать все в основном методе. Подобный подход хорошо работал с хранилищем blob, но хранилище таблиц создает проблемы.
Мне удалось создать таблицу с этим кодом.
static void Main(string[] args)
{
Microsoft.WindowsAzure.Storage.Table.CloudTableClient tableClient =
new Microsoft.WindowsAzure.Storage.Table.CloudTableClient(
new Uri("http://mystorage.table.core.windows.net/"),
new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials("[somename]", "[somekey]"));
CloudTable table = tableClient.GetTableReference("people");
table.CreateIfNotExists();
}
После запуска этого кода я мог видеть таблицу в моем хранилище, используя Azure Storage Explorer. (Все еще не выяснили, как увидеть таблицу в файле manage.windowsazure.com.)
Однако, если я попытаюсь вставить записи (как описано в руководстве по использованию, упомянутом ранее), я получаю конфликт 409 EntityAlreadyExists. Azure Storage Explorer не отображает записи в моей таблице.
CustomerEntity customer1 = new CustomerEntity("Harp", "Walter");
customer1.Email = "[email protected]";
customer1.PhoneNumber = "425-555-0101";
TableOperation insertOperation = TableOperation.Insert(customer1);
table.Execute(insertOperation);
Кроме того, я озадачен двумя перекрывающимися пространствами имен. И Microsoft.WindowsAzure.Storage.Table, и Microsoft.WindowsAzure.StorageClient содержат, например, класс CloudTableClient. Почему существуют два клиентских пространства имен и какой из них я должен использовать?
EDIT. Оказывается, запись существует. Просто дважды щелкнув по таблице в Azure Table Explorer, вы не увидите содержимое таблицы. Вы должны нажать "Запрос". Последний вопрос все еще стоит. Почему два пространства имен?