如何在官方mongo-csharp-driver中使用SetSerializationOptions方法?

时间:2011-11-16 05:54:35

标签: c# mongodb

我使用它就像:

  DateTimeSerializationOptions op = new DateTimeSerializationOptions(true);
      cursor = mc.Find(queryArg).SetLimit(limit).SetSkip(skip).SetSortOrder(sort).SetSerializationOptions(op);

它设置了dateOnly,但它似乎没有用,我犯了错误吗?

1 个答案:

答案 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);