标签:
1. 首先还是按照Azure Storage 的Pkg:public class Student : TableEntity
{
public Student()
{
}
public Student(string id, string name, DateTime joinedDate, bool hasGraduated)
{
Id = id;
Name = name;
JoinDate = joinedDate;
HasGraduated = hasGraduated.ToString();
RowKey = id;
PartitionKey = id;
}
public string Id { get; set; }
public string Name { get; set; }
public DateTime JoinDate { get; set; }
public string HasGraduated { get; set; }
}
private static CloudStorageAccount StorageAccount
{
get
{
var creds = new StorageCredentials(AccountName, Key);
var account = new CloudStorageAccount(creds, useHttps: true);
return account;
}
}public static void CreateTableIfNotExsit()
{
CloudTableClient tableClient = StorageAccount.CreateCloudTableClient();
// Create the table if it doesn‘t exist.
CloudTable table = tableClient.GetTableReference(TableName);
table.CreateIfNotExists();
}public static void Insert(Student s)
{
CloudTableClient tableClient = StorageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the "student" table.
CloudTable table = tableClient.GetTableReference(TableName);
// Create the TableOperation that inserts the entity.
TableOperation insertOperation = TableOperation.Insert(s);
// Execute the insert operation.
table.Execute(insertOperation);
}/// <summary>
/// if want to insert in the same patch must have the same partition key
/// </summary>
/// <param name="students"></param>
public static void Insert(IEnumerable<Student> students)
{
var tableClient = StorageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the "student" table.
var table = tableClient.GetTableReference(TableName);
// Create the batch operation.
var batchOperation = new TableBatchOperation();
// Add both entities to the batch insert operation.
foreach (var s in students)
{
batchOperation.Insert(s);
}
// Execute the batch operation.
table.ExecuteBatch(batchOperation);
}
public static IEnumerable<Student> GetByName(string name)
{
var tableClient = StorageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference(TableName);
var query = new TableQuery<Student>().Where(TableQuery.GenerateFilterCondition("Name", QueryComparisons.Equal, name));
foreach (Student entity in table.ExecuteQuery(query))
{
yield return entity;
}
}public static IEnumerable<Student> GetGraduatedStudentsByName(string name, bool graduated)
{
var tableClient = StorageAccount.CreateCloudTableClient();
//Create the CloudTable object that represents the "student" table.
var table = tableClient.GetTableReference(TableName);
// Create the table query.
var rangeQuery = new TableQuery<Student>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("Name", QueryComparisons.Equal, name),
TableOperators.And,
TableQuery.GenerateFilterCondition("HasGraduated", QueryComparisons.Equal,graduated ? "True" : "False"))
);
// Loop through the results, displaying information about the entity.
foreach (Student entity in table.ExecuteQuery(rangeQuery))
{
yield return entity;
}
}public static Student Single(string id)
{
CloudTableClient tableClient = StorageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the "student" table.
CloudTable table = tableClient.GetTableReference(TableName);
TableOperation retrieveOperation = TableOperation.Retrieve<Student>(id, id);
// Execute the retrieve operation.
var ret = table.Execute(retrieveOperation);
if (ret == null)
{
return null;
}
return (Student)ret.Result;
}public static void Update(Student student)
{
var tableClient = StorageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the table.
var table = tableClient.GetTableReference(TableName);
// Create a retrieve operation that takes a entity.
var retrieveOperation = TableOperation.Retrieve<Student>(student.Id, student.Id);
// Execute the operation.
var retrievedResult = table.Execute(retrieveOperation);
// Assign the result to a object.
var updateEntity = (Student)retrievedResult.Result;
if (updateEntity != null)
{
updateEntity.Name = student.Name;
updateEntity.JoinDate = student.JoinDate;
updateEntity.HasGraduated = student.HasGraduated;
var updateOperation = TableOperation.Replace(updateEntity);
// Execute the operation.
table.Execute(updateOperation);
}
}public static void Delete(string id)
{
var tableClient = StorageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference(TableName);
var retrieveOperation = TableOperation.Retrieve<Student>(id,id);
var retrievedResult = table.Execute(retrieveOperation);
var deleteEntity = (Student)retrievedResult.Result;
// Create the Delete TableOperation.
if (deleteEntity != null)
{
var deleteOperation = TableOperation.Delete(deleteEntity);
// Execute the operation.
table.Execute(deleteOperation);
}
}[TestMethod]
public void AzureTable_CRUD_Test()
{
AzureTableCRUD.CreateTableIfNotExsit();
AzureTableCRUD.Insert(new Student("1", "StuA", DateTime.Parse("2015-3-11 12:00:00 PM"), false));
AzureTableCRUD.Insert(new Student("2", "StuB", DateTime.Parse("2015-3-11 12:00:00 PM"), false));
AzureTableCRUD.Insert(new Student("3", "StuB", DateTime.Parse("2015-3-11 12:00:00 PM"), false));
AzureTableCRUD.Insert(new Student("4", "Gra_Stu_A", DateTime.Parse("2011-3-11 12:00:00 PM"), true));
AzureTableCRUD.Insert(new Student("5", "Gra_Stu_A", DateTime.Parse("2011-3-11 12:00:00 PM"), true));
// - get many
var stu = AzureTableCRUD.GetByName("StuB").ToList();
Assert.IsTrue(stu.Count == 2);
Assert.IsTrue(stu[0].Name == "StuB");
Assert.IsTrue(stu[1].Name == "StuB");
// - get single
var stuA = AzureTableCRUD.Single("1");
Assert.IsTrue(stuA.Name == "StuA");
// - combine condition get many
var graduates = AzureTableCRUD.GetGraduatedStudentsByName("Gra_Stu_A", true).ToList();
Assert.IsTrue(graduates.Count == 2);
Assert.IsTrue(graduates[0].Id == "4");
Assert.IsTrue(graduates[1].Id == "5");
AzureTableCRUD.Update(new Student("2","StuB_Modified",DateTime.Parse("2015-4-11 12:00:00"),false ));
var stuB = AzureTableCRUD.Single("2");
Assert.IsTrue(stuB.Name == "StuB_Modified");
Assert.IsTrue(stuB.JoinDate.Month == 4);
AzureTableCRUD.Delete("4");
var tryGetForth = AzureTableCRUD.Single("4");
Assert.IsNull(tryGetForth);
}在Azure Explorer中查看结果:
Windows Azure系列-- Azure Table的CRUD操作
标签:
原文地址:http://blog.csdn.net/lan_liang/article/details/46414663