2012-02-28 12 views
0

"Class1クラスのProperty1プロパティを直列化解除する際にエラーが発生しました:CurrentBsonTypeがObjectIdの場合ではなく、CurrentBsonTypeがStringの場合のみReadStringを呼び出せます。CurrentBsonTypeがObjectIdの場合ではなく、CurrentBsonTypeがStringである場合

クラスの文字列guidにbsonidを置き、クラスをマップしてシリアル化しましたが、オブジェクトをbsondocumentからクラスに逆シリアル化しようとしたときにこのエラーが表示されます。

これはどのように修正する必要がありますか?

public class Class1 
{ 
     [BsonId] 
     public string ClassGuid { get; private set; } 
} 

その後、クラスをマップ:あなたはおそらく一致しないあなたのコレクション内のドキュメントが既に存在

foreach(BsonDocument _document in _returnResults) 
{ 
    //exception here 
} 

答えて

0

if (!BsonClassMap.IsClassMapRegistered(typeof(WordOntology))) 
{ 
     BsonClassMap.RegisterClassMap<WordOntology>(); 
} 

次にループその後

MongoCursor<Class1> _returnResults = _collection.FindAs<Class1>(_query); 

をデシリアライズあなたのクラス定義。 mongoシェルを使用してそれらを探すことができます(文字列が存在すると予想されるObjectIdを持つドキュメントを探します)。

説明していない場合は、クラスの宣言と適切にデシリアライズされないサンプルドキュメント(mongoシェルを使用して表示される)を提供できますか?

+0

もっとクラス情報を追加しました。 – iefpw

+0

私は間違ったクラスにデシリアライズしようとしていました。 – iefpw

+0

今、あなたのために働いていますか?あなたにフォローアップの質問があれば教えてください。 –

関連する問題