我对MongoDB和NoSQL技术非常陌生,刚开始使用MongoDB / Norm / ASP.NET MVC 3构建网站。
我想知道如何限定连接到Mongo数据库的范围。
现在我有一个Basecontroller,它实例化了MongoSession,并在OnActionExecuted()中将其Dispose掉,使得所有派生的Controller都能访问到我的MongoSession。MongoSession类在构造函数中打开一个连接,并在Dispose()中关闭连接,就像今天所做的那样。
private IMongo _mongo;
public MongoSession()
{
_mongo = Mongo.Create("connString");
}
public void Dispose()
{
_mongo.Dispose();
}
我有点担心,如果我在控制器中同时进行其他操作,它可能会保持连接太长时间。
这种方法是否足以不冒险保持太多的连接,还是应该像下面的示例方法一样做些更多的事情?
public void Add<T>(T item) where T : class, new()
{
using (var mongo = Mongo.Create("connString"))
{
mongo.GetCollection<T>().Insert(item);
}
}
另一个跟进的问题是:
通过Norm打开和关闭MongoDB连接是否是“昂贵”的操作?