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

MongoDb serializa tipos genéricos (clases)

Ciertamente puede almacenar todos sus documentos en una colección, sin embargo, probablemente sea más fácil y más limpio a largo plazo almacenar solo un tipo en una colección (desde una perspectiva de C#). Puede hacerlo creando una clase con un método de extensión en MongoDatabase.

public static class MyDatabase
{
    public static MongoCollection<T> GetCollection<T>(this MongoDatabase db)
    {
        var name = typeof(T).Name;
        return db.GetCollection<T>(name);
    }
}

Luego, puede simplemente llamar a GetCollection con su tipo y el nombre se ocultará de su código general. También puedes crear algo como esto para abstraer las cosas un poco más:

public class MyDatabase
{
    private MongoDatabase _db;

    public MyDatabase(MongoDatabase db)
    {
        _db = db;
    }

    public MongoCollection<object> Objects
    {
        get
        {
            return _db.GetCollection<object>();
        }
    }
}

Con esto solo puedes hacer

var client = new MongoClient();
var server = client.GetServer();
var db = server.GetDatabase("MyDb");
var myDb = new MyDatabase(db);
myDb.Objects.Find();

Este Find mapeará para ejecutar contra los Objects colección, simplemente reemplace <object> con su tipo y asigne un nombre a la colección.