Хранение объекта контекста в объекте запроса, он утилизируется? - PullRequest
1 голос
/ 24 февраля 2011

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

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

...