上传到documentDB缺少复杂对象的内部JSON成员

时间:2016-01-26 20:58:10

标签: json azure azure-cosmosdb

我使用以下代码将数据上传到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
},

 ....

我是否应该插入文档以便不遗漏内部对象?

1 个答案:

答案 0 :(得分:1)

为了回答可能的未来需要帮助的人的问题,他们没有表现出来的原因是,OptimizationEntry只有“价格”作为[DataMember]以便它可以被序列化,而其他两个则没有。因此,JSON序列化不会在上载中包含它们。