3

我的實體類入門同時使用Azure的表存儲

public class VerifyVariableEntity : TableEntity 
{ 
    public VerifyVariableEntity() 
    { 

    } 

    public VerifyVariableEntity(string consumerId, string score) 
    { 
     PartitionKey = consumerId; 
     RowKey = score; 
    } 
    public string ConsumerId { get; set; } 

    public string Score { get; set; } 
} 

我取出由Azure的服務總線隊列中的數據錯誤「沒有在實體的所有屬性指定的值」,然後反序列化,最後嘗試將其存儲到Azure表存儲中。 以下是我從Service Bus Queue獲取數據並將其存儲到Azure表存儲器的實現。

class Program 
{ 
    static void Main(string[] args) 
    { 
     var connectionString = "myconnectionString"; 

     var queueName = "myqueueName"; 

     CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 
     CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); 

     CloudTable table = tableClient.GetTableReference("test"); 

     table.CreateIfNotExists(); 

     var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 
     client.OnMessage(message => 
     { 
      var bodyJson = new StreamReader(message.GetBody<Stream>(), Encoding.UTF8).ReadToEnd(); 
      var myMessage = JsonConvert.DeserializeObject<VerifyVariable>(bodyJson); 
      Console.WriteLine(bodyJson); 
      Console.WriteLine(myMessage.ConsumerId); 
      Console.WriteLine(myMessage.Score); 

      var VerifyVariableEntityObject = new VerifyVariableEntity() 
      { 
       ConsumerId = myMessage.ConsumerId, 
       Score = myMessage.Score 
      }; 

      TableOperation insertOperation = TableOperation.Insert(VerifyVariableEntityObject); 
      // Execute the insert operation. 
      table.Execute(insertOperation); 
     }); 


     Console.ReadLine(); 
    } 
} 

回答

2

根據您所提供的錯誤信息和代碼,我發現,你的實體未正確構建。在將實體插入到Azure表之前,需要指定PartitionKeyRowKey屬性。你可以嘗試修改代碼如下:

var VerifyVariableEntityObject = new VerifyVariableEntity() 
{ 
    ConsumerId = myMessage.ConsumerId, 
    Score = myMessage.Score, 
    PartitionKey=myMessage.ConsumerId, 
    RowKey=myMessage.Score 
}; 

var VerifyVariableEntityObject = new VerifyVariableEntity(myMessage.ConsumerId,myMessage.Score) 
{ 
    ConsumerId = myMessage.ConsumerId, 
    Score = myMessage.Score 
}; 
+0

我可以取回通過代碼插入的記錄,但我看不出在雲存儲在桌子底下在Azure門戶記錄。我是Azure的新手,因此我想知道在Azure門戶上反映插入的記錄需要多長時間。 – Sameer

+1

您只能在Azure門戶上看到表名列表。這是官方工具[Azure存儲資源管理器](http://storageexplorer.com/),用於管理存儲資源。你可以按照這個[教程](https://docs.microsoft.com/en-us/azure/vs-azure-tools-storage-manage-with-storage-explorer)開始使用Azure存儲資源管理器。 –