2017-06-16 12 views
1

私は、次のarticalDapperの - しないで近い接続

Dapper Implementation

を使用してDapperのと私の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; 
    } 
接続の多くは、一人ひとりのために作成されている理由

は、誰かが私に教えてくださいすることができデータベース呼び出し。 は私が

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

おかげで、事前に接続の数を監視するために、SQLクエリ次利用をした

答えて

0

あなたが言及記事がDapperので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

関連する問題