小巧玲珑与UOW - 不要关闭连接

问题描述:

我以下列ARTICAL小巧玲珑与UOW - 不要关闭连接

Dapper Implementation

实现我的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 
} 
+0

感谢您的答复,我通过看你的建议,解决了我的问题。 – Denuka