Хранение объекта контекста в объекте запроса, он утилизируется?
Я пишу приложение MVC3, используя NInject DI и шаблон репозитория. Ninject настроен так, что репозитории имеют время жизни для каждого запроса.
Я помещаю объект контекста в объект запроса Http, используя следующий код:
public static MessengerEntities GetContext()
{
if (!HttpContext.Current.Items.Contains("_db_context"))
{
HttpContext.Current.Items.Add("_db_context", new MessengerEntities());
}
return (MessengerEntities)HttpContext.Current.Items["_db_context"];
}
Затем каждый репозиторий вызывает эту процедуру для получения существующего или нового объекта контекста, например:
public class TestRepository : ITestRepository
{
private MessengerEntities context = ContextHelper.GetContext();
#region ITestRepository Members
private string _testProperty = "blah";
public string testProperty
{
get
{
_testProperty = context.UserLogins.Where(n => n.inactive == null || !n.inactive.Value).ToList().Count.ToString();
return _testProperty;
}
set
{
_testProperty = value;
}
}
#endregion
}
(Позже я планирую использовать общий шаблон IRepository, но сейчас я просто использую этот тестовый репозиторий.)
У меня такой вопрос: когда объект Request будет удален, будет ли он также удалять объект контекста в коллекции Items? Другими словами, будет ли он вызывать Dispose для каждого объекта, который может храниться в этой коллекции?
Я знаю, что здесь много дискуссий по этому вопросу, но все они, похоже, связаны со сценариями, которые не совсем совпадают с моими, поэтому трудно найти ответ.