问题描述
var streamIterator = containerLogs.GetItemQueryStreamIterator("SELECT * FROM mycontainer");
while (streamIterator.HasMoreResults)
{
var results = await streamIterator.ReadNextAsync();
var stream = results.Content;
using var reader = new StreamReader(stream);
string data = await reader.ReadToEndAsync();
// typeof what..?
//var dbDocuments = JsonConvert.DeserializeObject<???>(data);
}
变量data
将包含以下JSON:
{
"_rid": "wDhMAJ9xYHE=","Documents": [{
"id": "c05c4eee-32d4-458a-8ae8-d22dd0f93839","CustomProperty1": "Value 1","CustomProperty2": "Value 2","_rid": "wDhMAJ9xYHECAAAAAAAAAA==","_self": "dbs\/wDhMAA==\/colls\/wDhMAJ9xYHE=\/docs\/wDhMAJ9xYHECAAAAAAAAAA==\/","_etag": "\"00000000-0000-0000-7167-28c107aa01d6\"","_attachments": "attachments\/","_ts": 1597319093
}],"_count": 1
}
Documents
部分是我实际的“域”模型。如何轻松地将此映射回我的域模型类的列表?我使用相同的类来写入CosmosDB。
模型看起来像这样
public class MyModel
{
[JsonProperty(PropertyName = "id")]
public Guid Id {get;set;}
public string CustomProperty1 {get;set;}
public string CustomProperty1 {get;set;}
}
那么我如何查询我的CosmosDB,以便它返回此类的列表?
解决方法
有些samples对我有帮助。比较简单的情况是使用类型为GetItemQueryIterator<MyModel>
的类型,但也有一个stream deserialization示例。