我有一个我正在填充/更新的azure表,我想只创建一个行,如果它不存在,或者如果它缺少一个属性则更新该行。我在下面有行检查功能,但我不知道如何检查该行的属性是否为空。
纬度和经度是行属性,城市和州也是如此。
public static async Task<bool> rowExists(CloudTable table, string city, string state)
{
TableOperation tOP = TableOperation.Retrieve(state, city);
var result = await table.ExecuteAsync(tOP).ConfigureAwait(false);
if (result.Result == null)
{
return false;
}
/* else if(row latitude or longitude == null)
{
return false;
}
*/
else
return true;
}
修改
为了使问题更清楚,我的最终目标是在不存在的情况下插入一行。这部分工作正常。如果该行存在,但缺少纬度或经度(例如由于API达到了查询限制),我想更新该行以获取缺少的属性。
答案 0 :(得分:1)
基本上解决此问题的一种方法是将结果转换为DynamicTableEntity
对象,并检查其中是否存在特定属性。例如,您可以使用以下代码:
public static async Task<bool> RowExists(CloudTable table, string city, string state)
{
TableOperation tOP = TableOperation.Retrieve(state, city);
var result = await table.ExecuteAsync(tOP).ConfigureAwait(false);
var entity = result.Result as DynamicTableEntity;
if (entity == null) return false;//Entity does not exists.
if (!entity.Properties.ContainsKey("Latitude") || !entity.Properties.ContainsKey("Longitude")) return false;//Either of these attributes do not exist in the entity.
return true;//All's well. Let's move on to the next record :)
}