Потяните полную таблицу DynamodB с моделью документа - PullRequest
0 голосов
/ 25 сентября 2019
string tableName = _awsSettings.TableSettings.Table + _awsSettings.TableSettings.Suffix;
Table table = Table.LoadTable(_amazonDynamoDb, tableName);

DocumentBatchGet batch = table.CreateBatchGet();
await batch.ExecuteAsync();
List<Document> results = batch.Results;
return results.As<Lab>();

Приведенный выше код возвращает 0 результатов.Я надеюсь вернуть всю таблицу.

Как я могу, используя модель документа (Table.LoadTable), вытянуть всю таблицу?

1 Ответ

1 голос
/ 25 сентября 2019

Метод Table.LoadTable() возвращает объект Table, который в основном является оболочкой для клиента DynamoDB.Этот объект не содержит никаких данных, которые есть в фактической таблице в AWS.

Чтобы прочитать все элементы в таблице, вам нужно использовать метод Table.Scan().Вот пример кода, который использует scan для вывода содержимого таблицы в стандартный вывод.

    private static void DumpTable(Table table)
    {
        ScanFilter scanFilter = new ScanFilter();

        Search search = productCatalogTable.Scan(scanFilter);

        List<Document> documentList = new List<Document>();
        do
        {
            documentList = search.GetNextSet();
            foreach (var document in documentList)
                PrintDocument(document);
        } while (!search.IsDone);
    }

    private static void PrintDocument(Document document)
    {
        //   count++;
        Console.WriteLine();
        foreach (var attribute in document.GetAttributeNames())
        {
            string stringValue = null;
            var value = document[attribute];
            if (value is Primitive)
                stringValue = value.AsPrimitive().Value.ToString();
            else if (value is PrimitiveList)
                stringValue = string.Join(",", (from primitive
                                in value.AsPrimitiveList().Entries
                                                select primitive.Value).ToArray());
            Console.WriteLine("{0} - {1}", attribute, stringValue);
        }
    }
...