Azure表存储:有没有一种方法可以检查该属性是否存在?

时间:2019-08-20 06:04:50

标签: azure azure-table-storage

我是Azure的新手,正在执行一些迁移任务。我想到的是需要检查所有实体中是否已经存在属性,如果没有,我将使用InsertOrMergeEntityAsync方法。

问题是,如何检查该属性是否已经存在?通常,实体表示代码中具有某些预定义属性的某些实体。但就我而言,我需要检查存储帐户上现有数据中是否存在该属性

2 个答案:

答案 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 TablesSchema Less Key/Value Pair Store,因此与关系数据库表不同,没有表的预定义架构。您可以将任何东西放在桌子内。

关于如何检查属性是否存在,伊万的回答是正确的。您将必须获取所有实体,并检查每个实体中是否存在特定属性。