azure-table-storage - 使用 Azure 表存储时出现 "The values are not specified for all properties in the entity"错误

标签 azure-table-storage azure-servicebus-queues azure-tablequery

我的实体类

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();
    }
}

最佳答案

根据您提供的错误信息和代码,我发现您的实体构造不正确。 PartitionKeyRowKey在将实体插入 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/

相关文章:

c# - 如何通过 IEnumerable 使用 TableQuery 进行查询?

azure - Azure Function 中没有从表到 ITableEntity 的隐式引用转换

javascript - 使用 Javascript API 从 Azure 存储表查询中获取特定列

javascript - 如何将毫秒转换为 Javascript UTC 日期?

php - 适用于 PHP 客户端的 Azure 服务总线队列 ReceiveBatch

azure - 如何手动将消息发送到Azure Function中的服务总线死信队列?

Azure 表存储 - 表服务查询检索并返回 10 个实体,直到最后一个实体

azure - 如何使用 Microsoft.WindowsAzure.Storage.Table.CloudTableClient 授权托管标识访问 Azure 表存储

azure-table-storage - 如何在 Power Query 中高效筛选 Azure 表存储数据

asp.net-core - .NET Core Azure servicebusqueue 消息数