小编Ori*_*rif的帖子

使用后处理ObjectContext(按请求)

我正在使用创建一个ObjectContext per-request概念.从技术上讲,我将ObjectContext实例添加到HttpContext.Current.Items.但我不知道如何正确杀死这个实例.使用HttpModule并在其中部署ObjectContext是否安全?我的意思是,可能会为任何类型的请求调用HttpModule.我不想使用DI/IoC问题,因为项目需要轻量级(不允许第三方库).

更新:这里简单的代码:创建一个per-request ObjectContext(Entities类)

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和处理器模块:

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 = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework inversion-of-control

3
推荐指数
1
解决办法
3706
查看次数