2012-04-04 2 views
0

Я использую официальный драйвер C# и mongodb. У меня проблема при использовании класса BsonClassMap для сопоставления моего объекта. Вот некоторые примеры кода:MongoDB SetDefaultValue не работает - почему?

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

Когда я сохранить его в БД, я всегда получаю нулевое значение в поле заголовка, а не ожидаемый «ABC». Я пробовал тип перечисления и получал ту же проблему - где я ошибся?

ответ

2

Значение по умолчанию используется во время десериализации для присвоения значения полю или свойства IF, если десериализованный документ не имеет значения для этого поля или свойства.

Если вы создадите объект в памяти с нулевым значением для свойства Title, в базе данных будет храниться нуль. Просто потому, что Title имеет значение null, это не означает, что он будет заменен значением по умолчанию, когда документ будет сохранен.

+0

Большое вам спасибо, вы правы. перед десериализацией я просто удаляю поле «title» из db, затем я получил прекрасный «abc», я был немного смущен официальным руководством, в разделе «Стандартные значения» он печатает сериализацию, :), конечно, новичок, спасибо за ваш собеседник. –

Смежные вопросы