System.InvalidCastException:指定的强制转换无效。 - DynamoDB查询

时间:2016-12-04 22:46:45

标签: c# xamarin.forms amazon-dynamodb

我正在尝试查询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)工作得很好,并返回表中的完整推车列表。然而,这真的很慢,我只想看到一定数量的购物车。

任何帮助将不胜感激!非常感谢!

1 个答案:

答案 0 :(得分:1)

Context.QueryAsync<Cart>(config);这没有返回,因此引发了异常。如果我运行Context.QueryAsync<Cart>("nameofcart"); 由于某种原因它运行正常,只返回一个值。仍然无法弄清楚如何根据查询获取多个项目。