在 Mongo 自定义序列化中,我如何获取 objectId?
我已经实现了 IBsonSerializer,并且我的数据以我想要的方式显示在数据库中。但是,在我插入集合之后,我的 ObjectId 现在为空(000000000000000000000000),之前它的 ObjectId 为 5236ea9949444a06d7f50012。我可以看到 ObjectId 在数据库中,所以我知道它在那里,只是在我插入集合后它没有被填充到我的 C# 对象中。
这是我的代码:
public class EvaluationResultMongoSerializer : IBsonSerializer
{
public object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options)
{
throw new NotImplementedException();
}
public object Deserialize(BsonReader bsonReader, Type nominalType, IBsonSerializationOptions options)
{
throw new NotImplementedException();
}
public IBsonSerializationOptions GetDefaultSerializationOptions()
{
return null;
}
public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options)
{
EvaluationResult er = (EvaluationResult)value;
bsonWriter.WriteStartDocument();
bsonWriter.WriteDouble("Duration", er.DurationInSeconds);
bsonWriter.WriteDateTime("Start", BsonUtils.ToMillisecondsSinceEpoch(er.startTime));
bsonWriter.WriteDateTime("End", BsonUtils.ToMillisecondsSinceEpoch(er.endTime));
bsonWriter.WriteString("Result", er.Result.ValueAsString);
bsonWriter.WriteEndDocument();
}
}
我像这样注册映射:
BsonSerializer.RegisterSerializer(
typeof(EvaluationResult),
new EvaluationResultMongoSerializer()
);
而且我没有注册任何班级地图。