sql >> Database >  >> NoSQL >> MongoDB

MongoDb serialiseert generieke typen (klassen)

U kunt zeker al uw documenten in één verzameling opslaan, maar het is op de lange termijn waarschijnlijk gemakkelijker en schoner om slechts één type in een verzameling op te slaan (vanuit C#-perspectief). U kunt dit doen door een klasse met een extensiemethode op MongoDatabase te maken.

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

Dan kun je gewoon GetCollection bellen met je type erop en de naam wordt verborgen voor je algemene code. Je kunt ook zoiets maken om dingen een beetje verder te abstraheren:

public class MyDatabase
{
    private MongoDatabase _db;

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

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

Hiermee kun je gewoon

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

Deze Find zal toewijzen om uit te voeren tegen de Objects verzameling, vervang gewoon <object> met uw type en geef de collectie een naam.




  1. Hoe flapdoodle embedded mongodb in bepaalde tests uit te schakelen?

  2. Polymorfe typen deserialiseren met MongoDB C# Driver

  3. StackExchange.Redis ConnectionMultiplexer-pool voor synchrone methoden

  4. MongoDB:unieke sleutel in ingesloten document