2016-10-03 9 views
1

はMongoDBのC#のドライバは、C#クラスに単一のフィールドに、サーバからの2人のフィールド名をマップする能力を持っていますか?私たちはこれを必要と地図MongoDBのドキュメントから、古いフィールド名と新しいフィールド名を

理由は、我々のコード内のフィールドの名前を変更したことで、一定の期間のために古いものと新しいフィールド名の両方をサポートしたいと思います。

これは典型的なデータ移行のシナリオであり、我々はデータエンティティクラスにまたはロジックコードに特別なバージョンのロジックを追加することなく、マッピングを経てこれを行うためのパターンを確立することができれば、それは非常に参考になります。

現在、公式のC#ドライバv2.3をサーバv3.2とともに使用しています。

答えて

1

非常に可能ではないと思います。できることは

  1. bsonに保存されていない新しいプロパティを作成します。このようにしてBsonIgnoreタグを使用し、両方のプロパティのデータを入力し、提供しているJSON応答にそのデータを公開します。適切な無視ディレクティブが指定されていることを確認するには、JsonIgnoreを使用してください。

  2. Mongodbの移行テクニックを参照してください。 this oneのような移行ツールを使用できます。 C#ドライバ2.3.0を使用しているので、私はあなたがそれを使いたいと思っていて、フォークhereをC#ドライバ2.3.0との互換性のために使うことができます。

番号1のコードサンプル:

class Data 
{ 
    [JsonIgnore] 
    public string OldProperty { get; set; } 

    public string NewProperty 
    { 
     get 
     { 
      // Return this one or the old one based on your logic 
     } 
     set; 
    } 
} 
関連する問題