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

MongoDb serialisiert generische Typen (Klassen)

Sie können sicherlich alle Ihre Dokumente in einer Sammlung speichern, aber es ist auf lange Sicht wahrscheinlich einfacher und sauberer, nur einen Typ in einer Sammlung zu speichern (aus C#-Perspektive). Sie können dies tun, indem Sie eine Klasse mit einer Erweiterungsmethode auf MongoDatabase erstellen.

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

Dann können Sie einfach GetCollection mit Ihrem Typ aufrufen und der Name wird aus Ihrem allgemeinen Code ausgeblendet. Sie können auch so etwas erstellen, um die Dinge ein wenig weiter zu abstrahieren:

public class MyDatabase
{
    private MongoDatabase _db;

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

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

Damit können Sie einfach tun

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

Dieses Find wird abgebildet, um gegen die Objects ausgeführt zu werden Sammlung, ersetzen Sie einfach <object> mit Ihrem Typ und geben Sie der Sammlung einen Namen.