在Request对象中存储上下文对象,它被处理掉了吗?

时间:2011-02-24 18:18:16

标签: asp.net-mvc entity-framework asp.net-mvc-3 httpcontext object-persistence

我正在使用NInject DI和存储库模式编写MVC3应用程序。 Ninject已设置为存储库具有按请求生存期。

我使用以下代码将上下文对象放入Http Request对象:

    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 个答案:

没有答案