我正在使用创建一个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)