Azure 函数:如何查看 Table 存储中是否存在记录

Azure Function : How to see if a record exists in Table Storage

注意:这是针对 Azure 函数的。微软文档中的 normal C# links 不适用。它用于 Azure 函数。

场景:

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

Azure Functions 仍然无法执行 upsert

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

  1. 正在创建新记录。

  2. Updating an existing record.

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

error CS1061: 'CloudTable' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'CloudTable' could be found (are you missing a using directive or an assembly reference?)

所以此时,我需要检查一个项目是否已经存在,然后我需要调用创建或更新函数。

如何使用 Azure 函数查询 Table 存储以查看项目是否存在?

要检查实体是否存在,您可以接受它作为输入参数并测试 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");
}

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

[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);
}