我目前在一个Web服务类中,对于我正在进行的项目,我决定使用.NET Core平台创建一个Web API,将DynamoDB作为数据库。
到目前为止,让Dynamo使用.NET Core有点困难,因为我似乎找不到太多关于让两者一起工作的文章。我目前停留在如何从特定表中检索所有项目。
我一直在阅读Dynamo文档,并决定使用Object Persistence模型。
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDefaultAWSOptions(Configuration.GetAWSOptions());
services.AddAWSService<IAmazonDynamoDB>();
}
我在Startup文件的Configure Services方法中注入DynamoDB上下文。然后我像这样把它注入控制器
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
它表示您可以使用Query / Scan方法从数据库中检索项目,但遗憾的是,.NET Core平台不支持这些方法。在.NET Core上,它们被称为QueryAsync和ScanAsync,我想也许我可以在没有任何参数的情况下调用该方法,它只会检索表中的任何项目,但这不起作用。看起来这个方法特别适用于某些扫描条件,所以我不确定我是否使用了错误的方法,或者是否无法从表中检索任何和所有项目。
答案 0 :(得分:9)
QueryAsync
和ScanAsync
只是映射到DynamoDB async-style和Query操作的Scan方法。
您应该可以使用以下内容扫描表格中的所有项目:
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。