Asp.Net MVC UNITOfWork和MySQL和睡眠连接
发布时间:2020-12-16 06:57:59 所属栏目:asp.Net 来源:网络整理
导读:我有一个基于以下架构的MVC Web应用程序 Asp.Net MVC2,Ninject,Fluent NHibernate,MySQL使用单位工作模式. 与MySQL的每个连接都会生成一个睡眠连接,可以将其视为SHOW PROCESSLIST查询结果中的一个条目. 最终,这将产生足够的连接来执行应用程序池限制并使Web
我有一个基于以下架构的MVC Web应用程序
Asp.Net MVC2,Ninject,Fluent NHibernate,MySQL使用单位工作模式. 与MySQL的每个连接都会生成一个睡眠连接,可以将其视为SHOW PROCESSLIST查询结果中的一个条目. 最终,这将产生足够的连接来执行应用程序池限制并使Web应用程序崩溃. 我怀疑连接没有正确处理. 如果是这种情况,应该如何发生? 这是我正在使用的代码的快照: public class UnitOfWork : IUnitOfWork { private readonly ISessionFactory _sessionFactory; private readonly ITransaction _transaction; public ISession Session { get; private set; } public UnitOfWork(ISessionFactory sessionFactory) { _sessionFactory = sessionFactory; Session = _sessionFactory.OpenSession(); Session.FlushMode = FlushMode.Auto; _transaction = Session.BeginTransaction(IsolationLevel.ReadCommitted); } public void Dispose() { if (Session != null) { if (Session.IsOpen) { Session.Close(); Session = null; } } } public void Commit() { if (!_transaction.IsActive) { throw new InvalidOperationException("No active transation"); } _transaction.Commit(); Dispose(); } public void Rollback() { if (_transaction.IsActive) { _transaction.Rollback(); } } } public interface IUnitOfWork : IDisposable { void Commit(); void Rollback(); } public class DataService { int WebsiteId = Convert.ToInt32(ConfigurationManager.AppSettings["Id"]); private readonly IKeyedRepository<int,Page> pageRepository; private readonly IUnitOfWork unitOfWork; public PageService Pages { get; private set; } public DataService(IKeyedRepository<int,Page> pageRepository,IUnitOfWork unitOfWork) { this.pageRepository = pageRepository; this.unitOfWork = unitOfWork; Pages = new PageService(pageRepository); } public void Commit() { unitOfWork.Commit(); } } public class PageService { private readonly IKeyedRepository<int,Page> _pageRepository; private readonly PageValidator _pageValidation; public PageService(IKeyedRepository<int,Page> pageRepository) { _pageRepository = pageRepository; _pageValidation = new PageValidator(pageRepository); } public IList<Page> All() { return _pageRepository.All().ToList(); } public Page FindBy(int id) { return _pageRepository.FindBy(id); } } 解决方法
您的帖子没有提供创建UoW范围的任何信息.
如果是短暂的.它根本不会被处理掉,这取决于你. 在InRequestScope的情况下,它将在GC收集HttpContext后处理.但正如我最近在Ninject Mailing List中告诉Bob的那样,可以释放HttpApplication的最终请求事件处理程序中的所有对象.我将在Ninject的下一个版本中添加对此的支持. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在本地部署asp.net mvc4到IIS 7.5
- 为什么ASP.NET MVC中的移动视图在不同的服务器上显示不同?
- asp.net – 会话存储在客户端或服务器端
- asp.net – ModalPopupExtender和验证问题
- asp.net-core – MVC 6中的自定义Razor视图引擎
- asp.net – 无法在嵌入式ASPX代码中引用动态对象
- asp.net-mvc – 重用MVC arhitecture;有两层UI:ASP.NET MV
- asp.net-mvc – 无法在Web服务器上启动调试. Web服务器找不
- asp.net-mvc – ASP.NET MVC验证ViewState MAC失败
- asp.net-web-api – 从OWIN中间件更改响应对象
推荐文章
站长推荐
- asp.net – 部署后初始加载时出现奇怪的log4net引
- Asp.Net成员 – 实体框架4中的提供商
- asp.net – C#Web API模型绑定提供程序应如何工作
- asp.net – COMException未知错误(0x80005000) –
- asp.net-mvc-4 – 使用MVC 4 SimpleMembership与
- asp.net-mvc – 如何使用ASP.NET Razor语法应用b
- entity-framework – Entityframework Mapping问
- asp.net:response.redirect无法正常工作
- asp.net-mvc – 如何在ASP.NET Razor MVC4视图中
- asp.net – 无法加载viewstate.正在加载viewstat
热点阅读