使用 Azure 表存储时出现“未为实体中的所有属性指定值”错误
Posted
技术标签:
【中文标题】使用 Azure 表存储时出现“未为实体中的所有属性指定值”错误【英文标题】:Getting "The values are not specified for all properties in the entity" error while using Azure Table Storage 【发布时间】:2017-03-31 09:02:35 【问题描述】:我的实体类
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();
【问题讨论】:
【参考方案1】:在我开始使用 Visual Studio 2022 后,我在使用 Azure Storage Delete entity 命令时看到了这个错误,如下面的代码。
using Microsoft.WindowsAzure.Storage.Table.CloudTable
....
var tableOperation = TableOperation.Delete(entity);
return await CloudTable.ExecuteAsync(tableOperation);
VS 2022 使用 Azurite 而不是旧的 Azure Storage Emulator,这似乎是模拟器的问题,因为该代码正在使用 VS 2019 和实时 Azure环境。
所以,如果您可以开始使用 Visual Studio 2019,直到 Azurite 变得更加稳定。
【讨论】:
【参考方案2】:根据您提供的错误信息和代码,我发现您的实体构造不正确。在将实体插入 Azure 表之前,需要指定 PartitionKey
和 RowKey
属性。您可以尝试如下修改您的代码:
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 Portal上的记录。我是 Azure 的新手,所以我想知道在 Azure 门户上反映插入的记录需要多长时间。 您只能在 Azure 门户上看到表名列表。这是官方的工具Azure Storage Explorer,供您管理存储资源。您可以关注此tutorial 以开始使用 Azure 存储资源管理器。以上是关于使用 Azure 表存储时出现“未为实体中的所有属性指定值”错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Azure 存储 PHP SDK 时出现“其中一个请求输入超出范围”
尝试将数据库导出到 Azure 中的存储帐户时出现 403 错误