gpt4 book ai didi

c# - 使用 DynamoDB 检索表中的所有项目

转载 作者:太空狗 更新时间:2023-10-29 22:15:30 26 4
gpt4 key购买 nike

我目前在学习 Web 服务类(class),对于我正在从事的项目,我决定使用 .NET Core 平台制作一个 Web API,并将 DynamoDB 作为数据库。

到目前为止,让 Dynamo 与 .NET Core 一起工作有点困难,因为我似乎找不到太多关于让两者一起工作的文章。我目前停留在如何从特定表中检索所有项目。

我一直在通读 Dynamo 文档,并决定采用对象持久性模型。

    public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();

services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
services.AddAWSService<IAmazonDynamoDB>();
}

我在启动文件的配置服务方法中注入(inject) DynamoDB 上下文。然后我像这样将它注入(inject) Controller

    DynamoDBContext context;
public ValuesController(IAmazonDynamoDB context)
{
this.context = new DynamoDBContext(context);
}

同样,我绝不是这两种技术的专家,所以如果有更好的方法,请告诉我。

我还有一个一直在使用的简单模型,它是从 DynamoDB 文档中获得的。

[DynamoDBTable("AnimalsInventory")]
public class Item
{
[DynamoDBHashKey]
public Guid Id { get; set; }
[DynamoDBRangeKey]
public string Type { get; set; }
public string Name { get; set; }
}

本文在这里

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBContext.QueryScan.html

它说您可以只使用查询/扫描方法从数据库中检索项目,但不幸的是,.NET Core 平台不支持这些方法。在 .NET Core 上,它们被称为 QueryAsync 和 ScanAsync,我想也许我可以不带任何参数调用该方法,它只会检索表中的任何项目,但这没有用。看起来该方法特别适用于某些扫描条件,所以我不确定我是否使用了错误的方法,或者是否无法从表中检索任何和所有项目。

最佳答案

QueryAsyncScanAsync 只是 async-style映射到 DynamoDB 的方法 QueryScan操作。

您应该能够使用如下方式扫描表格中的所有项目:

var conditions = new List<ScanCondition>();
// you can add scan conditions, or leave empty
var allDocs = await context.ScanAsync<Item>(conditions).GetRemainingAsync();

我建议从 Scan API 的文档开始.它将解释实际的 API,而没有任何客户细节。您将了解分页、过滤表达式等。然后,如果您不熟悉 async/await,请继续阅读。最后将它们放在一起,您应该能够在自己的应用程序中使用 QueryAsync 和 ScanAsync。

关于c# - 使用 DynamoDB 检索表中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48631715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com