Azure功能:如何查看表存储中是否存在记录

时间:2018-01-24 20:12:41

标签: azure-functions azure-table-storage azure-tablequery

注意:这适用于Azure功能。 Microsoft Office上的normal C# links不适用。它适用于Azure功能。

情景:

我需要每个人只有1个条目,以及此人登录的最后日期。此属性每次都会更新。

Azure功能仍然无法执行upsert

因此我不得不将代码拆分为

  1. 创建新记录。

  2. Updating an existing record.

  3. 我不能简单地为创建和更新运行更新方法:

      

    错误CS1061:' CloudTable'不包含'添加'的定义和   没有扩展方法'添加'接受第一个类型的参数   ' CloudTable'可以找到(你是否错过了使用指令或   装配参考?)

    所以在这一点上,我需要检查项目是否已经存在,然后我需要调用create或update函数。

    如何使用Azure功能查询表存储以查看项目是否存在?

1 个答案:

答案 0 :(得分:3)

要检查实体是否存在,您可以将其作为输入参数接受并测试null

[FunctionName("UpsertEntity")]
public static HttpResponseMessage Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route="test/{id}")] 
    HttpRequestMessage req,
    string id,
    [Table("Test", "default", "{id}")] MyEntity entity)
{
    return req.CreateResponse(HttpStatusCode.OK, entity != null ? "exists" : "not found");
}

您可以使用输入和输出参数的组合进行upsert:

[FunctionName("UpsertEntity")]
public static HttpResponseMessage Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route="test/{id}")] 
    HttpRequestMessage req,
    string id,
    [Table("Test", "default", "{id}")] MyEntity entity,
    [Table("Test", "default", "{id}")] out MyEntity outEntity)
{
    outEntity = entity ?? new MyEntity { PartitionKey = "default", RowKey = id };
    outEntity.Name = Guid.NewGuid().ToString();
    return req.CreateResponse(HttpStatusCode.OK, id);
}