MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

C# MongoDB:Jak poprawnie zmapować obiekt domeny?

Istnieje możliwość serializacji/deserializacji klas, w których właściwości są tylko do odczytu. Jeśli próbujesz utrzymać ignorancję trwałości obiektów domeny, nie będziesz chciał używać BsonAttributes do prowadzenia serializacji, a jak już wspomniałeś, Automapping wymaga właściwości odczytu/zapisu, więc musisz samodzielnie zarejestrować mapy klas. Na przykład klasa:

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; } }
}

Można mapować za pomocą następującego kodu inicjującego:

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

Pamiętaj, że pola prywatne nie mogą być tylko do odczytu. Zauważ również, że deserializacja omija twój konstruktor i bezpośrednio inicjuje pola prywatne (serializacja .NET również działa w ten sposób).

Oto pełny przykładowy program, który to testuje:

http://www.pastie.org/1822994



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mangusta nie zapisuje danych

  2. Wynik zapytania modelu Rails Mongoid zwraca błędne informacje o rozmiarze/długości/liczbie, nawet przy użyciu limitu

  3. c# mongodb wyszukiwanie z uwzględnieniem wielkości liter

  4. Jak wykonać wyszukiwanie wielu tekstów za pomocą zapytania $text i $lub w mongodb / mongoose?

  5. podzbiór zapytań mongodb tablicy