提问人:Vladimir Venegas 提问时间:6/16/2016 最后编辑:Vladimir Venegas 更新时间:9/1/2022 访问量:3085
如何使用 DynamoDBContext 按全局二级索引进行查询
How query by global secondary index with DynamoDBContext
问:
我有这个具有以下属性的类:
- ContactId -> HashKey
- 电子邮件 -> Global Seconday Index Hash Key
- CreatedAt -> 属性
实际上,我有这个方法,但是给我抛出一个异常,因为“Email”属性不是HashKey。如何使用二级索引和 DynamoDBContext 类获取项目?我找到了一些示例,但它们都使用低级 api。
public Contact Get(string email)
{
Contact entity = null;
using (var context = new DynamoDBContext(new AmazonDynamoDBClient()))
{
entity = context.Load(new Contact() { Email = email });
}
return entity;
}
编辑:实际上,这段代码对我有用。它假定“电子邮件”是唯一的:
public Contact Get(string email)
{
Contact entity = null;
using (var context = new DynamoDBContext(new AmazonDynamoDBClient()))
{
entity = context.Query<Contact>(email, new DynamoDBOperationConfig {IndexName = "Email-index"}).FirstOrDefault();
}
return entity;
}
答:
0赞
vak
9/1/2022
#1
如果将 .NET Core 或 .NET 5 及更高版本与异步 API 调用配合使用,则应执行以下操作。请注意 QueryAsync 方法和 GetRemainingAsync()。Result,返回已完成的查询任务的结果。
public Contact Get(string email)
{
Contact entity = null;
using (var context = new DynamoDBContext(new AmazonDynamoDBClient()))
{
entity = context.QueryAsync<Contact>(email,
new DynamoDBOperationConfig {IndexName = "Email-index"})
.GetRemainingAsync().Result.FirstOrDefault();
}
return entity;
}
评论