asp.net-mvc – 如何在不依赖NHibernate的情况下为每个请求实现N
发布时间:2020-12-16 04:04:54 所属栏目:asp.Net 来源:网络整理
导读:我之前提出过这个问题,但我仍然在努力寻找一个可以让我理解的例子(请不要只是告诉我在没有至少一些指示的情况下查看S#arp架构项目). 到目前为止,我已经在我的网络项目中实现了近乎持久的无知.我的存储库类(在我的数据项目中)在构造函数中使用了一个ISession
我之前提出过这个问题,但我仍然在努力寻找一个可以让我理解的例子(请不要只是告诉我在没有至少一些指示的情况下查看S#arp架构项目).
到目前为止,我已经在我的网络项目中实现了近乎持久的无知.我的存储库类(在我的数据项目中)在构造函数中使用了一个ISession: public class ProductRepository : IProductRepository { private ISession _session; public ProductRepository(ISession session) { _session = session; } 在我的global.asax中,我公开当前会话,并在beginrequest和endrequest上创建和处理会话(这是我对NHibernate的依赖): public static ISessionFactory SessionFactory = CreateSessionFactory(); private static ISessionFactory CreateSessionFactory() { return new Configuration() .Configure() .BuildSessionFactory(); } protected MvcApplication() { BeginRequest += delegate { CurrentSessionContext.Bind(SessionFactory.OpenSession()); }; EndRequest += delegate { CurrentSessionContext.Unbind(SessionFactory).Dispose(); }; } 最后我的StructureMap注册表: public AppRegistry() { For<ISession>().TheDefault .Is.ConstructedBy(x => MvcApplication.SessionFactory.GetCurrentSession()); For<IProductRepository>().Use<ProductRepository>(); } 看来我需要我自己的ISession和ISessionFactory的通用实现,我可以在我的web项目中使用它并注入我的存储库? 所以只是为了澄清 – 我在我的存储库层使用NHibernate并希望使用session-per-(http)请求.因此,我将一个ISession注入到我的存储库构造函数中(使用structuremap).目前,为了在每个请求中创建和处理会话,我必须从我的web项目中引用NHibernate.这是我想要删除的依赖项. 谢谢, 解决方法
为什么不创建IHttpModule并在那里执行创建和处理(可能在Begin_Request和End_Request事件中),但是将IHttpModule放在具有NHibernate依赖性的项目中.例如.
namespace MyWebApp.Repository.NHibernateImpl { public class NHibernateModule : IHttpModule { public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(Context_BeginRequest); context.EndRequest += new EventHandler(Context_EndRequest); } private void Context_BeginRequest(object sender,EventArgs e) { // Create your ISession } private void Context_EndRequest(object sender,EventArgs e) { // Close/Dispose your ISession } public void Dispose() { // Perhaps dispose of your ISessionFactory here } } } 也许有更好的方法,我也有兴趣知道这一点,所以任何其他建议? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 来自ASP.NET MVC站点的“无效的JSON原语:alihack”错误
- 集训第六天:文件上传漏洞
- ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)
- asp.net-mvc – 你可以更新部分视图而不是全页信息吗?
- 身份验证 – 如何为Asp.NET MVC 5创建ClaimsIdentity对象?
- asp.net – 会话最佳实践
- asp-classic – 超过响应缓冲区限制
- asp.net-mvc – 将项目从ASP.NET MVC1迁移到ASP.NET MVC2
- 如何在asp.net中实现文件下载
- asp.net-mvc – Bug? ASP.NET MVC 2中的客户端验证导致Val
推荐文章
站长推荐
- 适用于ASP.NET Core 2的MultipartFormDataStream
- asp.net-mvc – ASP.NET MVC动态生成的图像URL
- asp.net-mvc-3 – MVC3:如何在HtmlHelper扩展中
- asp.net-mvc-3 – EF 4.1上的MvcMiniProfiler代码
- 腾讯云-容器-常用操作命令
- asp.net-core-mvc – Html.AntiForgeryToken()仍
- asp.net-core – CoreCLR中的MD5CryptoServicePr
- asp.net – 如何在WebForms中的form.onSubmit期间
- asp.net – 创建一个包含两列值的VB.NET数组?
- asp.net-mvc – MvcHtmlString.Create()和Html.R
热点阅读