我使用它就像:
DateTimeSerializationOptions op = new DateTimeSerializationOptions(true);
cursor = mc.Find(queryArg).SetLimit(limit).SetSkip(skip).SetSortOrder(sort).SetSerializationOptions(op);
它设置了dateOnly,但它似乎没有用,我犯了错误吗?
答案 0 :(得分:0)
SetSerializationOptions
通常用于全局定义某种类型序列化的方式。在您的代码中,您尝试将其用于反序列化(阅读)。
我不确定为什么你可以在MongoCursor
上设置序列化选项,但正如文档所说:“只在极少数情况下才需要”。我查看了源代码,驱动程序似乎很大程度上忽略了它。
您可能想要更改序列化行为:
仅序列化日期组件的最简单方法是使用属性:
public class Test
{
[BsonDateTimeOptions(DateOnly = true)]
public DateTime SomeDate {get; set;}
}
或者,您也可以手动注册:
BsonClassMap<Test> map = new BsonClassMap<Test>();
map.MapProperty(p => p.SomeDate).
SetSerializationOptions(DateTimeSerializationOptions.DateOnlyInstance);