我使用以下代码将数据上传到documentDB:
private static async Task UploadEntry(OptimizationData entry)
{
try
{
string endpointUrl = ConfigurationManager.AppSettings.Get("DocumentDBEndpointURL");
string authorizationKey = ConfigurationManager.AppSettings.Get("DocumentDBAuthKey");
string databaseId = ConfigurationManager.AppSettings.Get("DocumentDBDatabaseId");
string collectionName = ConfigurationManager.AppSettings.Get("CollectionName");
using (DocumentClient client = new DocumentClient(new Uri(endpointUrl), authorizationKey))
{
DocumentCollection documentCollection = client.CreateDocumentCollectionQuery("dbs/" + databaseId).Where(c => c.Id == collectionName).AsEnumerable().FirstOrDefault();
if (documentCollection != null)
{
await client.CreateDocumentAsync("dbs/" + databaseId + "/colls/" + documentCollection.Id, entry);
}
}
}
catch
{
//Ignored
}
}
现在我的对象属于以下类型:
public class OptimizationData
{
[DataMember]
public string Id { get; set; }
[DataMember]
public Dictionary<DateTime,OptimizationEntry> Optimization;
}
优化条目如下所示:
[DataContract]
public class OptimizationEntry
{
[DataMember]
public decimal price{ get; set; }
public decimal optimalPrice { get; set; }
public decimal weight { get; set; }
}
问题是,当我在天蓝色的门户网站上查看我的文档资源管理器时,字典的内部项目丢失了。即,它具有日期时间和第一个项目(价格),但不是optimialPrice和Weight
"Optimization": {
"2016-01-27T21:00:00": {
"price": 179.482711791992
},
"2016-01-27T22:00:00": {
"price": 196.533660888672
},
....
我是否应该插入文档以便不遗漏内部对象?
答案 0 :(得分:1)
为了回答可能的未来需要帮助的人的问题,他们没有表现出来的原因是,OptimizationEntry只有“价格”作为[DataMember]以便它可以被序列化,而其他两个则没有。因此,JSON序列化不会在上载中包含它们。