2014-07-17 60 views
0

我正在使用Microsoft Azure,並試圖找出表中所有的實體。不幸的是,我不知道這些實體的具體情況。我已閱讀http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/,它看起來大部分實體的他們知道他們的具體細節。例如,他們知道這將是一個人。找出表中的所有實體C#

有沒有辦法讓我的表的所有實體不知道它們的具體細節?

我想這樣做的原因是因爲我最終想知道我的表使用了多少內存,並且我假設我首先需要通過每個實體來查找使用了多少內存。下面的代碼我到目前爲止:

static double CalculateTableMemoryUsage() 
     { 
      double memory = 0; 
      try 
      { 
       var storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse("UseDevelopmentStorage=true"); 
       CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); 

       CloudTable table = tableClient.GetTableReference("mytable"); 
       table.CreateIfNotExists(); 
       //I've successfully created the table. Any idea how I can look 
       // through the entity(s) of that table though? 


      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex); 
      } 


      return memory; 
     } 

回答

1

有沒有辦法去通過我的表的所有實體的無 知道他們的具體情況如何?

是的。存儲客戶端庫有一些名爲DynamicTableEntity的東西,因此您可以從表中獲取DynamicTableEntity的實體。正如他們的名字所暗示的,在動態表實體的情況下,您並不需要知道該模式。下面是一個示例代碼,這樣做:

static void ListAllEntities() 
    { 
     var storageAccount = new CloudStorageAccount(new StorageCredentials(StorageAccount, StorageAccountKey), true); 
     var tableClient = storageAccount.CreateCloudTableClient(); 
     var table = tableClient.GetTableReference("mytable"); 
     List<DynamicTableEntity> entities = new List<DynamicTableEntity>(); 
     TableContinuationToken token = null; 
     do 
     { 
      var result = table.ExecuteQuerySegmented(new TableQuery(), token); 
      token = result.ContinuationToken; 
      entities.AddRange(result.Results); 
     } while (token != null); 
     Console.WriteLine("Total Entities Fetched: " + entities.Count); 
    } 

爲了計算實體的大小,你會發現這個博客帖子有用:http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/30/how-the-size-of-an-entity-is-caclulated-in-windows-azure-table-storage.aspx

相關問題