问题描述
LiteDB 5.0.9 的发行说明说:“即使是基本的 BSON 类型,现在也可以使用自定义序列化器和反序列化器。如果您不想在存储 DateTime 时失去精度,这将非常有用。”但是似乎没有任何文档描述如何执行此操作。有人可以指出我或提供一个例子吗?
谢谢
解决方法
DateTime 精度似乎是 common issue with LiteDB。 Issue 1765 provides the following solution:
var mapper = new BsonMapper();
mapper.RegisterType<DateTime>(
value => value.ToString("o",CultureInfo.InvariantCulture),bson => DateTime.ParseExact(bson,"o",CultureInfo.InvariantCulture,DateTimeStyles.RoundtripKind));
mapper.RegisterType<DateTimeOffset>(
value => value.ToString("o",bson => DateTimeOffset.ParseExact(bson,DateTimeStyles.RoundtripKind));
using (var db = new LiteDatabase("instance.db",mapper))
{
...
}