Изолированные функции Azure .NET 5 и как обновить хранилище таблиц с помощью привязки функций

#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 работают так, как описано здесь . Вы можете найти здесь какой- нибудь пример , но в нем отсутствует что-то, объясняющее, как выполнить обновление или удаление .