2012-04-04 43 views
0

我使用C#和MongoDB官方驱动。使用BsonClassMap类映射我的实体时遇到问题。下面是一些示例代码:MongoDB SetDefaultValue不起作用 - 为什么?

BsonClassMap.RegisterClassMap<Article>(cm => 
{ 
     cm.AutoMap(); 
     cm.GetMemberMap(c => c.Title).SetElementName("title").SetDefaultValue("abc"); 
} 

当我将它保存到数据库,我总是在标题字段为空值,而不是预期的“ABC”。我试过枚举类型并得到同样的问题 - 我哪里出错了?

回答

2

在反序列化过程中使用默认值将值分配给字段或属性如果被反序列化的文档没有该字段或属性的值。

如果在内存中为Title属性创建一个空值的对象,那么null将存储在数据库中。仅仅因为标题为空并不意味着它将在保存文档时被替换为默认值。

+0

太感谢你了,你是对的。在反序列化之前,我只是从db中删除了“title”字段,然后我得到了可爱的“abc”,我对官方教程感到有点困惑,在“默认值”部分,它会打印序列化:),新手,谢谢你的回答。 – 2012-04-05 13:58:16