MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDb sérialise les types génériques (classes)

Vous pouvez certainement stocker tous vos documents dans une collection, mais il est probablement plus facile et plus propre à long terme de ne stocker qu'un seul type dans une collection (du point de vue C#). Vous pouvez le faire en créant une classe avec une méthode d'extension sur MongoDatabase.

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

Ensuite, vous pouvez simplement appeler GetCollection avec votre type dessus et le nom sera caché de votre code général. Vous pouvez également créer quelque chose comme ceci pour résumer un peu plus les choses :

public class MyDatabase
{
    private MongoDatabase _db;

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

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

Avec cela, vous pouvez simplement faire

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

Cette Find mappera pour s'exécuter sur les Objects collection, remplacez simplement <object> avec votre type et donnez un nom à la collection.