Z pewnością możesz przechowywać wszystkie swoje dokumenty w jednej kolekcji, jednak na dłuższą metę prawdopodobnie łatwiej i czystsze jest przechowywanie tylko jednego typu w kolekcji (z perspektywy C#). Możesz to zrobić, tworząc klasę z metodą rozszerzenia w MongoDatabase.
public static class MyDatabase
{
public static MongoCollection<T> GetCollection<T>(this MongoDatabase db)
{
var name = typeof(T).Name;
return db.GetCollection<T>(name);
}
}
Następnie możesz po prostu wywołać GetCollection ze swoim typem, a nazwa zostanie ukryta przed ogólnym kodem. Możesz także stworzyć coś takiego, aby nieco bardziej abstrahować rzeczy:
public class MyDatabase
{
private MongoDatabase _db;
public MyDatabase(MongoDatabase db)
{
_db = db;
}
public MongoCollection<object> Objects
{
get
{
return _db.GetCollection<object>();
}
}
}
Dzięki temu możesz po prostu zrobić
var client = new MongoClient();
var server = client.GetServer();
var db = server.GetDatabase("MyDb");
var myDb = new MyDatabase(db);
myDb.Objects.Find();
To Find
będzie mapować do wykonania na Objects
kolekcji, po prostu zastąp <object>
z Twoim typem i nadaj kolekcji nazwę.