Removing ObjectContext (on request) after use

I use the creation of one ObjectContext concept for each request. Technically, I am adding an instance of ObjectContext to HttpContext.Current.Items. But I do not know how to kill this instance correctly. Can I use an HttpModule and dispose of an ObjectContext inside? I mean, the HttpModule can be called for any request. I do not want to use DI / IoC questions, because the project is needed to facilitate the work (no third-party libraries are allowed).

UPDATE: here is a simple code: The ObjectContext (Entities) class has been created for each request

public static class ObjectContextPerRequest
{
    public const string ObjectKey = "_per_request_context_key";

    public static Entities PerRequest
    {
        get
        {
            if (HttpContext.Current.Items[ObjectKey] != null)
            {
                var eContext = new Entities();
                HttpContext.Current.Items.Add(ObjectKey, eContext);

                return eContext;
            }

            return HttpContext.Current.Items[ObjectKey] as Entities;
        }
    }
}

and removal module:

class ObjectContextManagerModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.EndRequest += (s, e) => { Dispose(); };
    }

    public void Dispose()
    {
        if (HttpContext.Current.Items[ObjectContextPerRequest.ObjectKey] != null)
        {
            var edmx = (ObjectContext)HttpContext.Current.Items[ObjectContextPerRequest.ObjectKey];
            edmx.Dispose();
            edmx = null;
        }
    }
}
+3
source share
1 answer

BeginRequest, EndRequest ReleaseRequestState (, EndRequest). Init - , Dispose - , .

* UPDATE *

Init , :

public void Init(HttpApplication app)
{
   app.BeginRequest += new EventHandler(OnBeginRequest);
   app.EndRequest += new EventHandler(OnEndRequest);
}

, , , MSDN.

, . , IIS (, css) ( IIS 7 ), , ObjectContext .

* UPDATE MVC *

MVC, actionfilter, OnActionExecuting OnActionExecuted.

ActionFilter , .

+5

All Articles