2016-12-04 7 views
0

私はDynamoDBテーブルをクエリしようとしていますが、私はXamarin.Formsを使用しています。私は「カート」クラスを設定しており、特定のカートのセットを検索しようとしています。ここでは、コードは次のようになります。System.InvalidCastException:指定されたキャストが無効です。 - DynamoDBクエリ

[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; 
     } 
} 

私は「Context.QueryAsync」を押すと、私は「System.InvalidCastExceptionのを:指定されたキャストは有効ではありません。」を取得します例外。 私はそれ(ScanAsync)の下でコメントアウトした行はうまく動作し、テーブル内のカートの完全なリストを返します。しかしこれは本当に遅く、私はカートの特定のリストを見たいだけです。

ご協力いただければ幸いです!どうもありがとう!

+0

「AsyncSearch」の定義はどこですか? –

+0

http://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/DynamoDBv2/TDynamoDBv2DataModelAsyncSearch%601.html –

+0

「.GetRemainingAsync()」に '.Result'を追加する方法はありますか? –

答えて

1

Context.QueryAsync<Cart>(config);これは何も返さなかったため、例外がスローされました。もし私がContext.QueryAsync<Cart>("nameofcart"); を実行すると、それは何らかの理由で正常に動作し、ちょうど1つの値を返します。クエリに基づいて複数のアイテムを取得する方法はまだ分かりません。

関連する問題