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

MongoDB C#ドライバーを使用したポリモーフィック型の逆シリアル化

    同じ「publicObjectIdId」があるのはなぜですか。それぞれの派生クラスで?それは本当に良い考えではありません。親IDフィールドを非表示にします。

    問題を解決するには、派生クラスを「登録」する必要があります(他のシリアル化/逆シリアル化メカニズムと同様)。これを行うには、次の3つの方法があります。

    1. 宣言型 -基本ノードクラスを次のように装飾します:

      [BsonKnownTypes(typeof(PlotNode), typeof(EndNode))]
      
    2. 一般的な方法 -コンパイル時に型がわかっている場合:

      BsonClassMap.RegisterClassMap<PlotNode>();
      BsonClassMap.RegisterClassMap<EndNode>();
      
    3. 動的な方法 -コンパイル時に型が不明な場合:

      BsonClassMap.LookupClassMap(typeof(PlotNode));
      BsonClassMap.LookupClassMap(typeof(EndNode));
      

    • 別の提案 -クエリの代わりにLINQを使用する

      Node node = collection.AsQueryable().FirstOrDefault(n => n.Id == id);
      



    1. MongoDBでの遅いクエリの処理

    2. mongodbのストアド関数を呼び出す

    3. シンプルな.NET分散キャッシングソリューションの提案

    4. MongoDBインスタンスまたはレプリカセットのクローン作成