using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
namespace LoadDataIntoAzureTables
[assembly: SecurityRules(SecurityRuleSet.Level1)]
public static void Main(string[] args)
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=petabytenosqldb;AccountKey=eq6G0sb0t1c5HRBideLQzOpAIYVyNSS8ta8f790dEF8EWWyHQ+/uRLbgndwgqiIa+OyQBsOJiBI/hNWBraUXdQ==");
ServicePoint tableServicePoint = ServicePointManager.FindServicePoint(storageAccount.TableEndpoint);
tableServicePoint.ConnectionLimit = 1000;
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";
TableOperation insertOperation = TableOperation.Insert(customer1);
table.Execute(insertOperation);
TableBatchOperation batchOperation = new TableBatchOperation();
CustomerEntity customer2 = new CustomerEntity("Smith", "Jeff");
customer2.Email = "Jeff@contoso.com";
customer2.PhoneNumber = "425-555-0104";
CustomerEntity customer3 = new CustomerEntity("Smith", "Ben");
customer3.Email = "Ben@contoso.com";
customer3.PhoneNumber = "425-555-0102";
batchOperation.Insert(customer2);
batchOperation.Insert(customer3);
table.ExecuteBatch(batchOperation);
TableBatchOperation batchOperationMillion = new TableBatchOperation();
for (int i = 0; i < 100; i++)
CustomerEntity customerN = new CustomerEntity("BATCH1", "FirstName" + i.ToString());
customerN.Email = "Jeff" + i.ToString() + "@contoso.com";
customerN.PhoneNumber = "425-555-0104";
batchOperationMillion.Insert(customerN);
table.ExecuteBatch(batchOperationMillion);
TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>();
Console.WriteLine(query.Count());
query = new TableQuery<CustomerEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Smith"));
foreach (CustomerEntity entity in table.ExecuteQuery(query))
Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey, entity.Email, entity.PhoneNumber);
TableOperation retrieveOperation = TableOperation.Retrieve<CustomerEntity>("Smith", "Ben");
TableResult retrievedResult = table.Execute(retrieveOperation);
CustomerEntity updateEntity = (CustomerEntity)retrievedResult.Result;
if (updateEntity != null)
updateEntity.PhoneNumber = "425-555-1234";
TableOperation insertOrReplaceOperation = TableOperation.InsertOrReplace(updateEntity);
table.Execute(insertOrReplaceOperation);
Console.WriteLine("Entity was updated.");
Console.WriteLine("Entity could not be retrieved.");
TableQuery<DynamicTableEntity> projectionQuery = new TableQuery<DynamicTableEntity>().Select(new string[]
EntityResolver<string> resolver = (pk, rk, ts, props, etag) => props.ContainsKey("Email") ? props["Email"].StringValue : null;
foreach (string projectedEmail in table.ExecuteQuery(projectionQuery, resolver, null, null))
Console.WriteLine(projectedEmail);
#region DELETE AND CHECK AGAIN
retrieveOperation = TableOperation.Retrieve<CustomerEntity>("Smith", "Ben");
retrievedResult = table.Execute(retrieveOperation);
CustomerEntity deleteEntity = (CustomerEntity)retrievedResult.Result;
if (deleteEntity != null)
TableOperation deleteOperation = TableOperation.Delete(deleteEntity);
table.Execute(deleteOperation);
Console.WriteLine("Entity deleted.");
Console.WriteLine("Could not retrieve the entity.");
query = new TableQuery<CustomerEntity>();
foreach (CustomerEntity entity in table.ExecuteQuery(query))
Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey, entity.Email, entity.PhoneNumber);
public class CustomerEntity : TableEntity
public CustomerEntity(string lastName, string firstName)
this.PartitionKey = lastName;
public string PhoneNumber