MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDb serializar tipos genéricos (classes)


Você certamente pode armazenar todos os seus documentos em uma coleção, no entanto, provavelmente é mais fácil e limpo a longo prazo armazenar apenas um tipo em uma coleção (de uma perspectiva C#). Você pode fazer isso criando uma classe com um método de extensão no MongoDatabase.
public static class MyDatabase
{
    public static MongoCollection<T> GetCollection<T>(this MongoDatabase db)
    {
        var name = typeof(T).Name;
        return db.GetCollection<T>(name);
    }
}

Então você pode simplesmente chamar GetCollection com seu tipo e o nome ficará oculto do seu código geral. Você também pode criar algo assim para abstrair as coisas um pouco mais:
public class MyDatabase
{
    private MongoDatabase _db;

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

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

Com isso você pode simplesmente fazer
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 executar em relação aos Objects coleção, basta substituir <object> com o seu tipo e dê um nome à coleção.