我正在使用DynamoDB使用以下命令查询表
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 :(得分:16)
我最终使用了类似的东西:
// Issue request
QueryResponse result = AmazonDynamoDBClient.Query(request);
var items = result.Items.FirstOrDefault();
var doc = Document.FromAttributeMap(items);
var myModel = DynamoDBContext.FromDocument<MyModelType>(doc);
答案 1 :(得分:0)
你想要的是某种ORM - 一个很好的读物是Using Amazon DynamoDB Object Persistence Framework。另请查看同时显示示例的API reference
答案 2 :(得分:0)
查看使用AWS SDK for .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 实施
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("************************************************");
}
答案 3 :(得分:0)
我陷入了同一个问题,发现通过将Table.Query与QueryOperationConfig一起使用,我可以指定要使用的索引。因为从该查询返回的Document对象具有“ ToJson()”方法,所以我能够将查询结果转换为Json,然后使用Json.Net将其反序列化回我的对象,这对我来说是完美的完全平坦的物体。
var queryFilter = new QueryFilter(indexedColumnName, QueryOperator.Equal, targetValue);
Table table = Table.LoadTable(client, Configuration.Instance.DynamoTable);
var search = table.Query(new QueryOperationConfig { IndexName = indexName, Filter = queryFilter });
List<MyObject> objects = new List<MyObject>();
List<Document> documentSet = new List<Document>();
do
{
documentSet = search.GetNextSetAsync().Result;
foreach (var document in documentSet)
{
var record = JsonConvert.DeserializeObject<MyObject>(document.ToJson());
objects .Add(record);
}
} while (!search.IsDone);
希望它可以帮助您!