sql >> データベース >  >> NoSQL >> MongoDB

{document}.Idを修正する方法はサポートされていませんエラー

    私は同じ問題に直面していました。 MongoDBコードでデバッグした後、特定のタイプの代わりにインターフェイスを使用すると、別のシリアライザーが適用されることがわかりました。この場合、 DiscriminatedInterfaceSerializer インターフェースのシリアライザーとして使用されますが、 BsonClassMapSerializer 特定のタイプに使用されます。

    インターフェイス用のこのシリアライザでは、実装クラスのクラスマップはインターフェイスにリンクされていません。したがって、Idがbson idフィールドであり、「_id」キーにマップする必要があることは認識されません。そのため、例外が発生します。

    私のために働いた解決策は、 ImpliedImplementationInterfaceSerializerを使用することです :

    [BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
    public interface IEntity 
    { 
       // snip...
    }
    

    この属性はシリアライザーを登録し、Idプロパティが適切にマップされるようにIEntityのエンティティのbsonクラスマップを使用するように定義します。@ RobertBakerの回答のおかげで、このソリューションを見つけました:オブジェクトをMongoDBC#ドライバーとのインターフェースとして逆シリアル化>



    1. 正規表現MongoDBC#ドライバーでフィルター処理

    2. Node.jsでMongooseをページ付けする方法は?

    3. S3をデータベースとデータベース(MongoDBなど)として使用する

    4. 文字列タイムスタンプを使用した平均集計