Overleg:Programmeren in ASP.net 2.0 N-Tier Tutorial/Common Laag/Database.cs

Pagina-inhoud wordt niet ondersteund in andere talen.
Uit Wikibooks

public DbTransaction BeginTransaction() {

   DbConnection con = _factory.CreateConnection();
   con.ConnectionString = ConnectionString;
   con.Open();
   return con.BeginTransaction();

}

Dit zal een open connectie in de SQL pool achterlaten en bij veel gebruik de pool vol laten lopen. Wanneer je een Transaction begint in je code en een .Commit() uitvoerd wordt het Connection object op NULL gezet. Dit betekent dat je nooit een .Connection.Close() kan doen.

Je kan ook gewoon de connectie meegeven van de class zelf.

public DbTransaction BeginTransaction() {

   //Update - volgende 2 regels commented - Volgens mij zijn deze regels nutteloos...
   //DbConnection con = _factory.CreateConnection();
   //con.ConnectionString = ConnectionString;
   if(this.Connection.State == ConnectionState.Closed)
       this.Connection.Open();
   return this.Connection.BeginTransaction();

}

Let wel even op dat je bij de andere methods ook de connectie alleen opened als die al closed is. Aangezien je bij een transaction de connection gewoon open laat. Dit kan je door 'if(this.Connection.State == ConnectionState.Closed)' toe te voegen aan de methods in Database.cs of een extra method aan maken voor het sluiten van de connectie.

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.