2013-12-09 23 views
3

我使用DynamoDB來查詢表使用以下命令解析發電機分貝queryresponse反對

QueryRequest request = new QueryRequest 
{ 
    TableName = "Events", 
    ExclusiveStartKey = startKey, 
    KeyConditions = keyConditions, 
    IndexName = "Title-index" // Specify the index to query against 
}; 
// Issue request 
QueryResponse result = client.Query(request); 

的ExclusiveStartKey和Keyconditions是預定義

的問題是,QueryResult中結果變量不會被解析到我的本地對象,當我使用DynamoDB.Context您將該方法與預期的類型,但在這種情況下,我需要解析QueryResult ... 是否有任何其他方式來做到這一點? 還是應該解析對象?

+0

您是否找到一個很好的方法來做到這一點?使用DynamoDBContext或類似的東西... –

回答

0

看看從查詢表使用AWS SDK用於.NET低級API documentation

在你的處理方法的例子

var response = client.Query(request); 
var result = response.QueryResult; 

foreach (Dictionary<string, AttributeValue> item in response.QueryResult.Items) 
{ 
    // Process the result. 
    PrintItem(item); 
} 

PrintItem implementation

private static void PrintItem(Dictionary<string, AttributeValue> attributeList) 
    { 
     foreach (KeyValuePair<string, AttributeValue> kvp in attributeList) 
     { 
     string attributeName = kvp.Key; 
     AttributeValue value = kvp.Value; 

     Console.WriteLine(
      attributeName + " " + 
      (value.S == null ? "" : "S=[" + value.S + "]") + 
      (value.N == null ? "" : "N=[" + value.N + "]") + 
      (value.SS == null ? "" : "SS=[" + string.Join(",", value.SS.ToArray()) + "]") + 
      (value.NS == null ? "" : "NS=[" + string.Join(",", value.NS.ToArray()) + "]") 
     ); 
     } 
     Console.WriteLine("************************************************"); 
    } 
+0

是啊,我想做一個手動解析它的方法,但我想跳過它....持久框架解析這些項目的本地對象類型 –

0

你想要的是某種ORM - 一個不錯的閱讀是Using Amazon DynamoDB Object Persistence Framework。還檢查了API reference也顯示樣品

+2

是的,但問題是,當我查詢索引表時,我不能使用持久性框架,我使用de context.query (_HashValue,queryoperator(queryoperator.equal),value);它返回一個異常(索引不能爲空)或類似的東西......感謝您的時間 –

11

我結束了使用一些例如:

// Issue request 
QueryResponse result = AmazonDynamoDBClient.Query(request); 

var items = result.Items.FirstOrDefault(); 

var doc = Document.FromAttributeMap(items); 

var myModel = DynamoDBContext.FromDocument<MyModelType>(doc); 
+0

真棒,它爲我工作。我認爲這應該是被接受的答案。 – Alireza

+0

這應該明確地被標記爲接受的答案!很難找到我認爲會更明顯的東西的答案。請注意,上述代碼唯一的區別在於.FromDocument是DynamoDBContext實例上的一種方法。否則,它是完美的! –

+0

終於找到了!這真的很難找到,非常感謝@lee – r0bb077