Whenever learning new technologies I like to write the simplest possible example. Usually this means a console app with the least number of references. I've been trying, with little success, to write an app that reads and writes to Azure table storage. I've used this how-to guide as a basis, but try to do everything in the Main method. Similar approach worked well with the blob storage, but the table storage is giving trouble.I was able to create a table with this code.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();}After running this code I could see a table in my storage using Azure Storage Explorer. (Still haven't figured out how to see the table in manage.windowsazure.com.)However, if I try to insert records (as described in the how-to guide mentioned before), I get a conflict 409 EntityAlreadyExists. Azure Storage Explorer doesn't show any records in my table.CustomerEntity customer1 = new CustomerEntity("Harp", "Walter");customer1.Email = "Walter@contoso.com";customer1.PhoneNumber = "425-555-0101";TableOperation insertOperation = TableOperation.Insert(customer1);table.Execute(insertOperation);Also, I'm baffled by the two overlapping namespaces. Both Microsoft.WindowsAzure.Storage.Table and Microsoft.WindowsAzure.StorageClient contain e.g. a CloudTableClient class. Why are there two client namespaces and which one am I supposed to use?EDIT Turns out the record does exist. Simply double-clicking the table in Azure Table Explorer doesn't show the table contents. You have to click Query. The last question still stands. Why the two namespaces? 解决方案 The simplest sample I could think of is this. You need to NuGet WindowsAzure.Storage 2.0.static void Main(string[] args){ try { CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=<your_storage_name>;AccountKey=<your_account_key>"); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference("people"); table.CreateIfNotExists(); CustomerEntity customer1 = new CustomerEntity("Harp", "Walter"); customer1.Email = "Walter@contoso.com"; customer1.PhoneNumber = "425-555-0101"; // Create the TableOperation that inserts the customer entity. var insertOperation = TableOperation.Insert(customer1); // Execute the insert operation. table.Execute(insertOperation); // Read storage TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>() .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Harp")); var list = table.ExecuteQuery(query).ToList(); } catch (StorageException ex) { // Exception handling here. }}public class CustomerEntity : TableEntity{ public string Email { get; set; } public string PhoneNumber { get; set; } public CustomerEntity(string lastName, string firstName) { PartitionKey = lastName; RowKey = firstName; } public CustomerEntity() { }}The answer to the seconds question, why are there two namespaces that provided more or less the same APIs, Azure Storage Client Library 2.0 contains a new simplified API. See link below.What's New in Storage Client Library for .NET (version 2.0) 这篇关于Azure表存储-最简单的示例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
07-23 09:58
查看更多