我的文档包含字符串字段,其中包含DateTimeOffset值。例如:
public class DateTimePocoDocument : Resource
{
public string startTime { get; set; }
public string endTime { get; set; }
}
想象一下字符串值的设置如下。
myDateTimePocoDocument.startTime = DateTimeOffset.UtcNow.ToString("o");
使用.NET DocumentClient在DocumentDb中创建文档。
public async Task<Document> InsertAsync(TDocument data)
{
return await Client.CreateDocumentAsync(Collection.SelfLink, data);
}
在DocumentDb中查看文档会显示正确存储的字符串字段。
[
{
"startTime": "2016-10-01T13:00:00.0000000+00:00",
"endTime": "2016-10-01T14:35:17.215947+00:00",
"id": "2b6e53e1-2099-41f8-8405-f9daf750cfc8",
"_rid": "6qt9AJ0xkgDkAwAAAAAAAA==",
"_self": "dbs/6qt9AA==/colls/6qt9AJ0xkgA=/docs/6qt9AJ0xkgDkAwAAAAAAAA==/",
"_etag": "\"3d00c96d-0000-0000-0000-586e67b40000\"",
"_attachments": "attachments/",
"_ts": 1483630513
}
]
我这样做是因为我想手动处理DateTimeOffset值的所有序列化和反序列化。当数据跨控制器移动,被序列化到Azure App客户端,被序列化为SQLite并返回等等时,我需要精确性和可预测性。
当我按如下方式执行查询时:
Client.CreateDocumentQuery<TDocument>(Collection.DocumentsLink,
query,
new FeedOptions { EnableScanInQuery = true, EnableCrossPartitionQuery = false });
文档将上面的startTime 字符串返回为“10/01/2016 13:00:00”。我创建了一个自定义JsonConverter并将其附加到属性以查看分配给字符串属性的内容。转换器确认正在为字符串字段分配DateTime。 DocumentDb客户端选择将字符串视为日期值,因为它看起来像日期。不幸的是,在这种情况下会导致字符串值发生变化。为什么它在我的字符串上执行转换,如何在不必自定义字符串的情况下阻止它?
由于