#c# #azure #azure-functions #.net-5
Вопрос:
Я пытаюсь обновить строку хранилища таблицы в изолированных функциях Azure .NET 5, где я использовал привязку функций (среда-функция v. 3).
Я воспроизвел этот пример (см. Код ниже), но я не могу найти способ обновить «MyTableData» с помощью существующего ключа раздела. Если я попытаюсь использовать один и тот же ключ раздела, привязка функции не выполнит «upsert», и я всегда получаю «Внутреннюю ошибку сервера».
Знаете ли вы, есть ли способ управлять обновлением и вставкой с привязкой функций?
using System;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace SampleApp
{
public static class TableFunction
{
[Function("TableFunction")]
[TableOutput("OutputTable", Connection = "AzureWebJobsStorage")]
public static MyTableData Run([QueueTrigger("table-items")] string input,
[TableInput("MyTable", "MyPartition", "{queueTrigger}")] MyTableData tableInput,
FunctionContext context)
{
var logger = context.GetLogger("TableFunction");
logger.LogInformation($"PK={tableInput.PartitionKey}, RK={tableInput.RowKey}, Text={tableInput.Text}");
return new MyTableData()
{
PartitionKey = "queue",
RowKey = Guid.NewGuid().ToString(),
Text = $"Output record with rowkey {input} created at {DateTime.Now}"
};
}
}
public class MyTableData
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
}
Комментарии:
1. Похоже, что есть ошибка с привязками функций
Ответ №1:
Используйте CloudTable
параметр метода для чтения таблицы с помощью пакета SDK для хранилища Azure.
CloudTable
поддерживается только в функциях версии 2 и выше во время выполнения.
Если вы попытаетесь выполнить привязку CloudTable
и получите сообщение об ошибке, убедитесь, что у вас есть ссылка на правильную версию SDK для хранилища.
Пожалуйста, обратитесь к этой и привязкам хранилища таблиц Azure для справки.
Комментарии:
1. Привет, спасибо за ваш ответ. Это решение не работает в изолированном процессе .NET worker , если я попытаюсь использовать атрибут «Таблица», установив «Microsoft. Лазурь. Веб-задания. Расширения. Хранилище» NuGet, я получаю ошибку: AZFW0001 . Я использую изолированные функции .NET 5 и «Microsoft. Лазурь. Функции. Работник. Расширения. Хранилище» NuGet. Спасибо
2. Новые привязки .NET worker работают так, как описано здесь . Вы можете найти здесь какой- нибудь пример , но в нем отсутствует что-то, объясняющее, как выполнить обновление или удаление .