2012-09-20 3 views
0

У меня есть коллекция в MongoDB, которую я пытаюсь «FindAndModify» с помощью драйвера C#. Эта коллекция имеет виды базового класса и его производных классифицируется следующим образом:MongoDB BsonDocument Down-Casting

[BsonDiscriminator(RootClass = true)] 
    public class Father 
    { 
     public Guid Id { get; private set; } 
    } 

    public class Son : Father 
    { 
     public string SomeProperty { get; private set; } 
    } 

Когда я пытаюсь бросить BsonDocument к моему базовому классу, после FindAndModify, где результат «Сын»:

Father modifiedDocument = result.GetModifiedDocumentAs<Father>(); 

я получаю следующее исключение:

System.IO.FileFormatException: Element 'SomeProperty' не соответствует любое поле или свойство класса Фатх э.

Любая идея, почему? -Я не могу сделать здесь бросок?

Thanks, Nir.

ответ

0

Я смог решить эту проблему, зарегистрировав карту классов типа «Сын» при загрузке. Вот ссылка на код, который я использую:

if (!BsonClassMap.IsClassMapRegistered(typeof(T))) 
    { 
     BsonClassMap.RegisterClassMap<T> 
     (cm => 
     { 
      cm.AutoMap(); 
     }); 
    } 

Надеюсь, это поможет кому-то.

Cheers, Nir.

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