asp.net – 将linq连接到sql datacontext到业务层中的httpcontex
发布时间:2020-12-15 20:55:47 所属栏目:asp.Net 来源:网络整理
导读:我需要我的 linq to sql datacontext在我的业务/数据层可用,以便我的所有存储库对象都可以访问.但是,由于这是一个Web应用程序,我想根据请求创建并销毁它.我想知道是否有一个可以懒惰创建并将datacontext附加到当前HttpContext的单例类可以工作.我的问题是:
我需要我的
linq to sql datacontext在我的业务/数据层可用,以便我的所有存储库对象都可以访问.但是,由于这是一个Web应用程序,我想根据请求创建并销毁它.我想知道是否有一个可以懒惰创建并将datacontext附加到当前HttpContext的单例类可以工作.我的问题是:当请求结束时,datacontext会自动处理吗?以下是我正在思考的代码.这是否达到了我的目的:拥有一个可以延迟使用的线程安全的datacontext实例,并在请求结束时自动处理?
public class SingletonDC { public static NorthwindDataContext Default { get { NorthwindDataContext defaultInstance = (NorthwindDataContext)System.Web.HttpContext.Current.Items["datacontext"]; if (defaultInstance == null) { defaultInstance = new NorthwindDataContext(); System.Web.HttpContext.Current.Items.Add("datacontext",defaultInstance); } return defaultInstance; } } } 解决方法
你想象的是有意义的 – 使用HTTP Request上下文存储东西 – 但是,当请求结束时,存储在当前HttpContext中的一次性对象不会自动神奇地被处理掉.你不得不以某种方式自己解决这个问题.
有一个“结束请求”事件,您可以轻松地挂钩,例如使用您放入Global.asax.cs的代码.在Application_EndRequest()方法中,可以在需要它的列表中的每个对象上手动调用Dispose(). 一种方法是迭代上下文中的每个项目,测试IDisposable,然后在适当时调用Dispose. protected void Application_EndRequest(Object sender,EventArgs e) { foreach (var key in HttpContext.Current.Items.Keys) { var disposable = HttpContext.Current.Items[key] as IDisposable; if (disposable != null) { disposable.Dispose(); HttpContext.Current.Items[key] = null; } } } 我认为应该这样做. ASPNET不会自动为您执行此操作.当然,在真实应用程序中使用此代码之前,您需要保护免受异常等的影响. Vertigo的Keith Craig写了a relevant post on the topic a while ago,描述了你想要做什么作为一种模式,换句话说,一种做一些应该重复的事情.他提供了一个类来帮助解决这个问题,延迟加载DB上下文并将其放入当前上下文中.这种方法存在一些缺陷 – 您可以在该帖子的评论讨论中阅读它们.评论中还引用了一堆相关文章. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – IIS 8 – 默认文档 – 找不到资源
- asp.net-web-api – 如何在ASP.NET Web API中验证文件上载
- asp.net – 使用Booksleeve维护开放的Redis PubSub订阅
- 如何将ASP.NET网站编译成单个DLL文件?
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关
- 对VS 2019中ASP.NET Core项目解决:The term 'Add-Migr
- 如何使用asp.net中的Enter键提交表单
- asp.net-mvc – 根据需要设置RenderSection:false,但仍抛出
- asp.net-mvc – ASP.net MVC – 显示模板集合
- 从ASP.NET Web API中删除XML中的命名空间
推荐文章
站长推荐
- 如何组合WebResource.axd和ScriptResource.axd文
- asp.net-mvc – 如何只允许mvc4 razor中的文本框
- asp.net-mvc – System.Web.Mvc.dll发生了什么?
- asp.net – 是否有一个简单的方法来呈现具有Micr
- asp.net – IQueryable和存储库 – 需要2?
- asp.net – 3层架构 – 需要一个例子
- asp.net – 使用jquery的IE不能正常工作
- asp.net-mvc – 如何在MVC WebGrid中显示行号
- asp.net-mvc-3 – ASP.NET MVC如何使用pingfeder
- asp.net – 我可以在DefaultModelBinder上禁用Da
热点阅读