Я очень новичок в MongoDB и NoSQL в целом, и я только начал создавать сайт с MongoDB / Norm / ASP.NET MVC 3.
Мне интересно, как я должен определять границы соединений с моей базой данных Mongo.
Прямо сейчас у меня есть Basecontroller, который создает экземпляр MongoSession, и onActionExecuted. Я распоряжаюсь им, чтобы все мои производные контроллеры имели доступ к моей 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);
}
}
Еще один вопрос:
Являются ли открытие и закрытие соединений MongoDB через Norm "дорогими" операциями?