小巧玲珑与UOW - 不要关闭连接
问题描述:
我以下列ARTICAL小巧玲珑与UOW - 不要关闭连接
实现我的DAL与小巧玲珑的却是创造了每分贝和每一个数据库调用的连接。它不重用连接池。我相信我已经关闭并正确处理了连接。
这是如何从服务层调用示例
dtoList = unitofWork.RegionalSettingRepository.GetCurrencySymbols(); unitofWork.Commit(); // To close the connections
这是库调用
public List<CurrencySymbolDTO> GetCurrencySymbols()
{
List<CurrencySymbolDTO> dtoList = null;
try
{
string strSQL = "SELECT * from CurrencySymbol";
dtoList = this.Connection.Query<CurrencySymbolDTO>(strSQL, null, transaction: Transaction).ToList();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
}
return dtoList;
}
有人能告诉我为什么很多连接都为每一个创建数据库调用。 我确实使用了下面的SQL查询来监视
SELECT DB_NAME(dbid) as DBName, COUNT(dbid) as NumberOfConnections, loginame as LoginName FROM sys.sysprocesses WHERE DB_NAME(dbid) ='database name' GROUP BY dbid, loginame
提前感谢连接数
答
你提到的文章是非常适合与精致小巧学习UOW;我自己从那篇文章开始研究UoW。我在实现它的同时遇到了类似的问题,以满足我的业务需求,并修改了一些代码。你可以在this的答案找到详细的代码。
使用此代码,您可以更好地控制连接/事务;你这样称呼它:
随着交易:
using(DalSession dalSession = new DalSession())
{
UnitOfWork unitOfWork = dalSession.UnitOfWork;
unitOfWork.Begin();
try
{
//Your database code here
unitOfWork.Commit();
}
catch
{
unitOfWork.Rollback();
throw;
}
}
没有交易:
using(DalSession dalSession = new DalSession())
{
//Your database code here
}
感谢您的答复,我通过看你的建议,解决了我的问题。 – Denuka