我是Azure的新手,正在执行一些迁移任务。我想到的是需要检查所有实体中是否已经存在属性,如果没有,我将使用InsertOrMergeEntityAsync
方法。
问题是,如何检查该属性是否已经存在?通常,实体表示代码中具有某些预定义属性的某些实体。但就我而言,我需要检查存储帐户上现有数据中是否存在该属性
答案 0 :(得分:1)
我想到的方法是检查每个实体是否具有该属性。
示例代码如下:
CloudStorageAccount storageAccount = new CloudStorageAccount(new StorageCredentials("xx", "xxx"), true);
CloudTableClient client = storageAccount.CreateCloudTableClient();
CloudTable table = client.GetTableReference("table_name");
table.CreateIfNotExists();
TableOperation op1 = TableOperation.Retrieve<DynamicTableEntity>("partitionKey", "rowkey");
TableResult result = table.Execute(op1);
if (result.Result != null)
{
if (((DynamicTableEntity)result.Result).Properties.ContainsKey("Emails"))
{
//the table contains the property(column) Emails, then you can do something.
}
else
{
//Does not contain the property(column) Emails, do something
}
}
答案 1 :(得分:0)
详细说明伊万的答案。
本质上Azure Tables
是Schema Less Key/Value Pair Store
,因此与关系数据库表不同,没有表的预定义架构。您可以将任何东西放在桌子内。
关于如何检查属性是否存在,伊万的回答是正确的。您将必须获取所有实体,并检查每个实体中是否存在特定属性。