我正在搜索有关如何使用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做到这一点吗?
最好的问候
答案 0 :(得分:1)
此代码工作正常。虽然文档提到了2.0版,但这指的是存储SDK的版本,而不是.NET的版本。
修改强>
要获取GetTableReference方法,您需要执行以下操作:
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;
}
}