sql >> Base de Datos >  >> NoSQL >> MongoDB

C# MongoDB:¿Cómo mapear correctamente un objeto de dominio?

Es posible serializar/deserializar clases donde las propiedades son de solo lectura. Si está tratando de mantener la persistencia de los objetos de su dominio ignorante, no querrá usar BsonAttributes para guiar la serialización y, como señaló, AutoMapping requiere propiedades de lectura/escritura, por lo que tendría que registrar los mapas de clase usted mismo. Por ejemplo, la clase:

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

Se puede mapear usando el siguiente código de inicialización:

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

Tenga en cuenta que los campos privados no pueden ser de solo lectura. Tenga en cuenta también que la deserialización omite su constructor e inicializa directamente los campos privados (la serialización .NET también funciona de esta manera).

Aquí hay un programa de muestra completo que prueba esto:

http://www.pastie.org/1822994