首页 > 解决方案 > 使用文档模型拉取完整的 dynamodb 表

问题描述

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) 拉出整个表格?

标签: c#amazon-web-servicesamazon-dynamodbaws-sdk

解决方案


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);
        }
    }

推荐阅读