i am very new to MongoDB and NoSQL in general and i've just started building a site with MongoDB / Norm / ASP.NET MVC 3.
I am wondering how i should be scoping the connections to my Mongo database.
Right now i have a Basecontroller that instanciates the MongoSession and onActionExecuted i dispose it so all my deriving controllers will have access to my MongoSession. The MongoSession class opens a connection in its constructor and disposes it on Dispose(), the way it's working today.
private IMongo _mongo;
public MongoSession()
{
_mongo = Mongo.Create("connString");
}
public void Dispose()
{
_mongo.Dispose();
}
I am a bit worried it might be holding connections open too long if i am doing other stuff aswell in the controllers.
Is that approach enought to not risking holding too many connections open or should i be doing something more like the example method below?
public void Add<T>(T item) where T : class, new()
{
using (var mongo = Mongo.Create("connString"))
{
mongo.GetCollection<T>().Insert(item);
}
}
Another follow up question is:
Are opening and closing MongoDB connections through Norm "expensive" operations?