上传到 documentDB 缺少复杂对象的内部 JSON 成员
Uploading to documentDB is missing inner JSON members of complex objects
我正在使用以下代码将数据上传到 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; }
}
问题是,当我在 Azure 的门户上查看我的文档资源管理器时,字典的内部项目丢失了。即,它有日期时间和第一项(价格)但不是 optimialPrice 和 Weight
"Optimization": {
"2016-01-27T21:00:00": {
"price": 179.482711791992
},
"2016-01-27T22:00:00": {
"price": 196.533660888672
},
....
有没有什么方法可以让我插入文档,以免遗漏内部对象?
为未来可能需要帮助的人回答这个问题,他们没有显示的原因是 OptimizationEntry 只有 "price" 作为 [DataMember] 以便可以序列化,其他两个没有.因此 JSON 序列化没有将它们包含在上传中。
我正在使用以下代码将数据上传到 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; }
}
问题是,当我在 Azure 的门户上查看我的文档资源管理器时,字典的内部项目丢失了。即,它有日期时间和第一项(价格)但不是 optimialPrice 和 Weight
"Optimization": {
"2016-01-27T21:00:00": {
"price": 179.482711791992
},
"2016-01-27T22:00:00": {
"price": 196.533660888672
},
....
有没有什么方法可以让我插入文档,以免遗漏内部对象?
为未来可能需要帮助的人回答这个问题,他们没有显示的原因是 OptimizationEntry 只有 "price" 作为 [DataMember] 以便可以序列化,其他两个没有.因此 JSON 序列化没有将它们包含在上传中。