2012-11-21 100 views
0

我正在搜索一些关于如何使用Azure SDK在Azure表存储中存储和检索数据的示例或文档。用于TableStorage和.NET 4.5的Azure SDK

我使用.NET 4.5框架的C#。

我在这里找到https://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/文档。

部分:

// Create the CloudTable object that represents the "people" table. 
CloudTable table = tableClient.GetTableReference("people"); 

// Create a new customer entity. 
CustomerEntity customer1 = new CustomerEntity("Harp", "Walter"); 
customer1.Email = "[email protected]"; 
customer1.PhoneNumber = "425-555-0101"; 

// Create the TableOperation that inserts the customer entity. 
TableOperation insertOperation = TableOperation.Insert(customer1); 

// Execute the insert operation. 
table.Execute(insertOperation); 

不再可用。

有谁知道如何使用.NET 4.5来做到这一点吗?

最好的问候

回答

1

此代码正常工作。虽然文档提到版本2.0,但它指向的是存储SDK的版本,而不是.NET的版本。

编辑:

为了得到你需要做以下的GetTableReference方法:

  • 参考Microsoft.WindowsAzure.Storage.dll版本2.0.0.0或更高版本(通过的NuGet: Install-Package WindowsAzure.Storage
  • 添加下面的命名空间:

using Microsoft.WindowsAzure.Storage; 
using Microsoft.WindowsAzure.Storage.Auth; 
using Microsoft.WindowsAzure.Storage.Table; 
  • 初始化存储帐户和表客户端。

var account = new CloudStorageAccount(...); 
var tableClient = account.CreateCloudTableClient(); 
+0

有defenitly为tableClient或CloudTable类没有getTableReference()方法!你使用了哪个.NET版本? – veote

+0

我已经更新了我的答案 –

+0

谢谢,你说得对,我用错了SDK! – veote

1

这是我的表存储管理器类,我使用.NET 4.5

public class TableStorageManager 
{ 
    private CloudTableClient TableClient; 
    private CloudTable Table; 

    #region Sigleton implementation 

    public TableStorageManager(string tablename) 
    { 
     TableClient = StorageFactory.GetCloudStorageAccount().CreateCloudTableClient(); 
     Table = TableClient.GetTableReference(tablename); 
     //var ctx = TableClient.GetTableServiceContext(); 

     Table.CreateIfNotExists(); 
    } 

    #endregion 

    public void InsertAnyEntity<T>(T entity) 
    { 
     var translatedEntity = Helper.ConvertToDictionaryEntity<T>(entity); 
     InsertEntity<DictionaryEntity>(translatedEntity); 
    } 
    public void InsertEntity<T>(T entity) where T : ITableEntity 
    { 
     Table.Execute(TableOperation.InsertOrReplace(entity)); 
    } 

    public IEnumerable<T> ExecuteQuery<T>(TableQuery<T> query) where T : class, ITableEntity, new() 
    { 
     return Table.ExecuteQuery(query); 
    } 

    public IEnumerable<T> GetEntities<T>(String partitionKey, Int32 noOfRecords) where T : ITableEntity, new() 
    { 
     var query = new TableQuery<T>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey)); 
     var result = Table.ExecuteQuery(query).Take(noOfRecords).ToList(); 
     return result; 
    } 

    public T GetEntity<T>(String partitionKey, String rowKey) where T : class, ITableEntity, new() 
    { 
     var retrieveOperation = TableOperation.Retrieve<T>(partitionKey, rowKey); 

     // Execute the retrieve operation. 
     var retrievedResult = Table.Execute(retrieveOperation); 
     return retrievedResult.Result as T; 
    } 

    public Boolean DeleleEntity<T>(String partitionKey, String rowKey) where T : class, ITableEntity, new() 
    { 
     TableOperation retrieveOperation = TableOperation.Retrieve<T>(partitionKey, rowKey); 

     // Execute the operation. 
     var retrievedResult = Table.Execute(retrieveOperation); 

     // Assign the result to a CustomerEntity. 
     var deleteEntity = (T)retrievedResult.Result; 

     // Create the Delete TableOperation. 
     if (deleteEntity != null) 
     { 
      TableOperation deleteOperation = TableOperation.Delete(deleteEntity); 

      // Execute the operation. 
      Table.Execute(deleteOperation); 
     } 

     return true; 
    } 

    public Boolean UpdateEntity<T>(String partitionKey, String rowKey) where T : class, ITableEntity, new() 
    { 
     TableOperation retrieveOperation = TableOperation.Retrieve<T>(partitionKey, rowKey); 

     // Execute the operation. 
     TableResult retrievedResult = Table.Execute(retrieveOperation); 

     // Assign the result to a CustomerEntity object. 
     var updateEntity = (T)retrievedResult.Result; 

     if (updateEntity != null) 
     { 
      // Create the InsertOrReplace TableOperation 
      TableOperation updateOperation = TableOperation.Replace(updateEntity); 

      // Execute the operation. 
      Table.Execute(updateOperation); 
     } 

     return true; 
    } 

    public Boolean UpdateEntity<T>(T entity) where T : class, ITableEntity, new() 
    { 
     Boolean isUpdate = false; 
     try 
     { 
      // Create the InsertOrReplace TableOperation 
      TableOperation updateOperation = TableOperation.Replace(entity); 

      // Execute the operation. 
      Table.Execute(updateOperation); 
      isUpdate = true; 
     } 
     catch (Exception ex) 
     { 
      isUpdate = false; 
     } 

     return isUpdate; 
    } 
}