注意:这适用于Azure功能。 Microsoft Office上的normal C# links不适用。它适用于Azure功能。
情景:
我需要每个人只有1个条目,以及此人登录的最后日期。此属性每次都会更新。
Azure功能仍然无法执行upsert
因此我不得不将代码拆分为
创建新记录。
我不能简单地为创建和更新运行更新方法:
错误CS1061:' CloudTable'不包含'添加'的定义和 没有扩展方法'添加'接受第一个类型的参数 ' CloudTable'可以找到(你是否错过了使用指令或 装配参考?)
所以在这一点上,我需要检查项目是否已经存在,然后我需要调用create或update函数。
如何使用Azure功能查询表存储以查看项目是否存在?
答案 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);
}