Привязка к хранилищу таблиц в функциях Azure версии 2 с помощью CloudTable

Итак, согласно эта проблема на GitHub, поддержка IQueryable была прекращена для v2 Функции Azure. Это также отражено в официальные документы. В этом документе также упоминается, что CloudTable можно использовать для привязки к хранилищу таблиц, однако никакой конкретной информации или примеров не предоставляется. В минимальном рабочем примере, как будет выглядеть привязка хранилища таблиц для функции Azure версии 2 (например, для чтения всех строк таблицы из хранилища таблиц)? Любая помощь высоко ценится!


person Mike Floyd    schedule 22.02.2018    source источник


Ответы (1)


Должно быть так же просто, как

[FunctionName("TestFunction")]
public static async Task Run(
    [QueueTrigger("test-queue")] string message,
    [Table("testTable")] CloudTable testTable)
{
    var querySegment = testTable.ExecuteQuerySegmentedAsync(new TableQuery<ResultEntity>(), null);
    foreach (ResultEntity item in querySegment.Result)
    {
        // Access table storage items here
    }
}

Полный рабочий пример доступен здесь.

person Mikhail Shilkov    schedule 22.02.2018
comment
Приветствую @Mikhail за быстрый ответ. Использование ExecuteQuery дает 'CloudTable' does not contain a definition for 'ExecuteQuery' and no extension method 'ExecuteQuery' accepting a first argument of type 'CloudTable' could be found (are you missing a using directive or an assembly reference?) [readCtab]. Я включил using Microsoft.WindowsAzure.Storage.Table; из пакета WindowsAzure.Storage. Я пробовал с версией 8.6.0 и 9.0 безуспешно. - person Mike Floyd; 22.02.2018
comment
@MikeFloyd Я скопировал это из полного примера .NET framework. Я обновил образец, добавив ExecuteQuerySegmentedAsync, который я использовал в .NET Standard. Не могли бы вы попробовать это? - person Mikhail Shilkov; 22.02.2018
comment
ваш пример все еще требовал некоторой возни, но он определенно указал мне в правильном направлении. Теперь у меня есть рабочий пример, см. Мой ответ ниже. Полный пример здесь. Большое спасибо за ваши указатели! - person Mike Floyd; 22.02.2018
comment
@MikeFloyd Круто, добро пожаловать. Я думаю, вы могли бы просто расширить мой ответ, а не копировать его, но все, что вам подходит. - person Mikhail Shilkov; 22.02.2018
comment
Совершенно логично @Mikhail. Я удалил повторяющийся ответ и расширил ваш образец кода, чтобы он соответствовал рабочему образцу. Еще раз приветствую вашу быструю и своевременную помощь. - person Mike Floyd; 22.02.2018
comment
Мне не хватало атрибута Table, поскольку в моем проекте .NET Standard 2.0 были только эти пакеты Nuget: Microsoft.NET.Sdk.Functions 1.0.23 и NETStandard.Library 2.0.3. Покопавшись, я обнаружил, что этот атрибут находится в пакете Microsoft.Azure.WebJobs.Extensions.Storage 3.0.1, который мне пришлось включить. - person Artemious; 23.10.2018
comment
Просто примечание: это не работает с последними SDK. Вы получите сообщение об ошибке Can't bind Table to type Microsoft.WindowsAzure.Storage.Table.CloudTable'. - возможная причина: github.com/ Azure / azure-functions-host / issues / 3784 - person Krumelur; 15.07.2019
comment
@Krumelur, смогли ли вы найти обходной путь? - person Shakil78692; 09.01.2020