适用于.NET 4.5的TableStorage Azure SDK

时间:2012-11-21 21:13:02

标签: c# azure azure-storage azure-table-storage

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

我在.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 = "Walter@contoso.com";
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做到这一点吗?

最好的问候

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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;
    }
}