我的实体类
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 表存储中。
下面是我从服务总线队列中获取数据并将其存储到 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();
}
}
最佳答案
根据您提供的错误信息和代码,我发现您的实体构造不正确。 PartitionKey
和 RowKey
在将实体插入 Azure 表之前,需要指定属性。您可以尝试如下修改您的代码:
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
};
关于azure-table-storage - 使用 Azure 表存储时出现 "The values are not specified for all properties in the entity"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40644421/