我正在尝试查询DynamoDB表,并且我正在使用Xamarin.Forms。我有一个" Cart"班级设置,我试图检索一组特定的购物车。这是代码:
[DynamoDBTable("Carts")]
public class Cart
{
[DynamoDBHashKey]
public string Name { get; set; }
public string Subtitle { get; set; }
public static async Task<List<Cart>> GetAll()
{
CognitoAWSCredentials Credentials = new CognitoAWSCredentials(
"us-west-2:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
RegionEndpoint.USWest2
);
AmazonDynamoDBClient Client = new AmazonDynamoDBClient(Credentials, RegionEndpoint.USWest2);
DynamoDBContext Context = new DynamoDBContext(Client);
DynamoDBOperationConfig config = new DynamoDBOperationConfig();
List<ScanCondition> filter = new List<ScanCondition>()
{ new ScanCondition("Name", ScanOperator.Equal, "NameOfCart") };
config.QueryFilter = filter;
AsyncSearch<Cart> asyncsearch = Context.QueryAsync<Cart>(config);
//AsyncSearch<Cart> asyncsearch = Context.ScanAsync<Cart>(null);
List<Cart> carts = await asyncsearch.GetRemainingAsync();
return carts;
}
}
当我点击&#34; Context.QueryAsync&#34;我得到一个&#34; System.InvalidCastException:指定的强制转换是无效的。&#34;例外。 我在它下面注释的行(ScanAsync)工作得很好,并返回表中的完整推车列表。然而,这真的很慢,我只想看到一定数量的购物车。
任何帮助将不胜感激!非常感谢!
答案 0 :(得分:1)
Context.QueryAsync<Cart>(config);
这没有返回,因此引发了异常。如果我运行Context.QueryAsync<Cart>("nameofcart");
由于某种原因它运行正常,只返回一个值。仍然无法弄清楚如何根据查询获取多个项目。