1

我正在编写一个 MVC3 应用程序,使用 NInject DI 和存储库模式。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 吗?

我知道这里有很多关于这个问题的讨论,但它们似乎都涉及与我不太相同的场景,所以很难预测答案。

4

0 回答 0