Хранение объекта контекста в объекте запроса, он утилизируется?

Я пишу приложение 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 для каждого объекта, который может храниться в этой коллекции?

Я знаю, что здесь много дискуссий по этому вопросу, но все они, похоже, связаны со сценариями, которые не совсем совпадают с моими, поэтому трудно найти ответ.

0 ответов

Другие вопросы по тегам