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

C#MongoDB:ドメインオブジェクトを正しくマップする方法は?

    プロパティが読み取り専用であるクラスをシリアル化/逆シリアル化することが可能です。ドメインオブジェクトの永続性を無視しようとしている場合は、BsonAttributesを使用してシリアル化をガイドする必要はありません。また、AutoMappingには読み取り/書き込みプロパティが必要であるため、クラスマップを自分で登録する必要があります。たとえば、クラス:

    public class C {
        private ObjectId id;
        private int x;
    
        public C(ObjectId id, int x) {
            this.id = id;
            this.x = x;
        }
    
        public ObjectId Id { get { return id; } }
        public int X { get { return x; } }
    }
    

    次の初期化コードを使用してマッピングできます:

    BsonClassMap.RegisterClassMap<C>(cm => {
        cm.MapIdField("id");
        cm.MapField("x");
    });
    

    プライベートフィールドは読み取り専用ではないことに注意してください。また、逆シリアル化はコンストラクターをバイパスし、プライベートフィールドを直接初期化することにも注意してください(.NETシリアル化もこのように機能します)。

    これをテストする完全なサンプルプログラムは次のとおりです。

    http://www.pastie.org/1822994



    1. SailsJSとMongoの一意の属性は無視されます

    2. MonogoDBレプリカセットのステータスがスタートアップからセカンダリに変更されない

    3. Mongoose / NodeJSのタイムスタンプフィールドで個別の日付アイテムをカウントするにはどうすればよいですか?

    4. DoctrineODMとスキーマレス設計