MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

C# MongoDB:Wie ordnet man ein Domänenobjekt richtig zu?

Es ist möglich, Klassen zu serialisieren/deserialisieren, deren Eigenschaften schreibgeschützt sind. Wenn Sie versuchen, die Persistenz Ihrer Domänenobjekte zu ignorieren, möchten Sie BsonAttributes nicht verwenden, um die Serialisierung zu steuern, und wie Sie bereits betont haben, erfordert AutoMapping Lese-/Schreibeigenschaften, sodass Sie die Klassenzuordnungen selbst registrieren müssten. Zum Beispiel die Klasse:

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

Kann mit folgendem Initialisierungscode abgebildet werden:

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

Beachten Sie, dass die privaten Felder nicht schreibgeschützt sein können. Beachten Sie auch, dass die Deserialisierung Ihren Konstruktor umgeht und die privaten Felder direkt initialisiert (.NET-Serialisierung funktioniert auch auf diese Weise).

Hier ist ein vollständiges Beispielprogramm, das dies testet:

http://www.pastie.org/1822994