And*_*wes 10 azure azure-table-storage azure-functions
我试图基于Azure功能更新Azure表中的行.我看到Table绑定可以处理一个ICollector,它有一个Add方法,它会添加一行.我还看到你使用IQueryable来读取数据.
您如何更新数据中的特定行?
我在WebJobs中看到了与InsertOrReplace相关的东西,它是TableOperations的一种方法,但我不知道它是否或如何发挥作用以及如何在Azure Functions中使用它.
Ste*_*ary 16
使用今天的 bindings,您可以将ETag属性设置为值*以执行 upsert:
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log,
[Table("test")] IAsyncCollector<PocoClass> table)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
if (name == null)
return new BadRequestResult();
await table.AddAsync(new PocoClass { Name = name });
return new OkObjectResult($"Hello, {name}");
}
public sealed class PocoClass
{
public string PartitionKey { get; } = "partition";
public string RowKey { get; } = "row";
public string ETag { get; } = "*";
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
mat*_*ewc 15
以下是您可以执行此操作的一种方法.我们的下一个版本将使这些步骤变得更加容易,但是现在您需要手动引入Azure Storage SDK.
首先,按照此帮助页面的"程序包管理"部分中的步骤提取Azure Storage SDK.您将上传一个project.json看起来像这样的函数文件夹:
{
"frameworks": {
"net46":{
"dependencies": {
"WindowsAzure.Storage": "7.0.0"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:在下一个版本中,我们将自动包含Azure Storage SDK,以便您可以直接在代码中使用它.在提取包后,您可以在" 集成"选项卡选项卡"高级编辑器"中输入如下所示的功能元数据:
{
"bindings": [
{
"name": "input",
"type": "manualTrigger",
"direction": "in"
},
{
"name": "table",
"type": "table",
"tableName": "test",
"connection": "<your connection>",
"direction": "in"
}
]
}
Run Code Online (Sandbox Code Playgroud)
以下是相应的代码.我们绑定到CloudTable这里让我们读/写实体:
#r "Microsoft.WindowsAzure.Storage"
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
public static void Run(string input, CloudTable table, TraceWriter log)
{
TableOperation operation = TableOperation.Retrieve<Person>("AAA", "001");
TableResult result = table.Execute(operation);
Person person = (Person)result.Result;
log.Verbose($"{person.Name} is {person.Status}");
person.Status = input;
operation = TableOperation.Replace(person);
table.Execute(operation);
}
public class Person : TableEntity
{
public string Name { get;set; }
public string Status { get;set; }
}
Run Code Online (Sandbox Code Playgroud)
我在本例中使用了ManualTrigger,但表绑定将适用于您拥有的任何触发器.通过上面的设置,我可以在门户网站的运行输入框中输入一个值并点击运行.该函数将查询实体,输出其当前值,然后使用我的输入进行更新.
其他排列也是可能的.例如,如果您有来自另一个绑定参数的实体实例,则可以使用CloudTable以类似的方式更新它.
| 归档时间: |
|
| 查看次数: |
5989 次 |
| 最近记录: |