2017-06-16 1 views
1

Ich habe meine DAL mit Dapper umgesetzt, indem Sie folgenden articalDapper mit UOW - nicht schließen Verbindungen

Dapper Implementation

aber es ist eine Verbindung mit db jedem und jedem Datenbank-Aufruf erstellt. Der Verbindungspool wird nicht wiederverwendet. Ich glaube, ich habe die Verbindung richtig geschlossen und angeordnet.

Dies ist die Probe, wie aus Dienstschicht nennen

dtoList = unitofWork.RegionalSettingRepository.GetCurrencySymbols(); unitofWork.Commit(); // To close the connections

Dieses Repository Aufruf ist

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; 
    } 

Kann mir bitte jemand sagen, warum viele Verbindungen für jeden geschaffen Datenbankanruf. habe ich Gebrauch Abfrage folgende SQL die Anzahl der Verbindungen

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

Vielen Dank im Voraus

Antwort

0

Der Artikel, den Sie ist für das Lernen UOW mit Dapper groß bezeichnet zu überwachen; Ich selbst habe mit diesem Artikel mein Studium der UOW begonnen. Ich hatte ähnliche Probleme bei der Implementierung, um meine Geschäftsanforderungen zu erfüllen, und ich änderte den Code ein wenig. Sie können detaillierten Code in this Antwort finden.

Mit diesem Code erhalten Sie mehr Kontrolle über Verbindung/Transaktion; Sie nennen es wie folgt aus:

Mit der Transaktion:

using(DalSession dalSession = new DalSession()) 
{ 
    UnitOfWork unitOfWork = dalSession.UnitOfWork; 
    unitOfWork.Begin(); 
    try 
    { 
     //Your database code here 
     unitOfWork.Commit(); 
    } 
    catch 
    { 
     unitOfWork.Rollback(); 
     throw; 
    } 
} 

Ohne Transaktion:

using(DalSession dalSession = new DalSession()) 
{ 
    //Your database code here 
} 
+0

Danke für die Antwort, ich mein Problem gelöst, indem Sie Ihre Vorschläge an. – Denuka

Verwandte Themen