0

注意:这是针对 Azure 函数的。微软文档上的普通 C# 链接不适用。它适用于 Azure 函数。

设想:

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

Azure Functions 仍然无法执行upsert

因此我不得不将我的代码分成

  1. 创建新记录。

  2. 更新现有记录。

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

错误 CS1061:“CloudTable”不包含“Add”的定义,并且找不到接受“CloudTable”类型的第一个参数的扩展方法“Add”(您是否缺少 using 指令或程序集引用?)

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

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

4

1 回答 1

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);
}
于 2018-01-24T20:41:43.730 回答