Comment fermer la connection de Microsoft.Practices.EnterpriseLibrary.Data.ExecuteNonQuery

J'utilise la bibliothèque microsoft.practices.enterpriselibrary, pour accéder à une database SQL Server. Je me request comment fermer la connection lorsque j'utilise la méthode ExecuteNonQuery?

c'est à dire:

using Microsoft.Practices.EnterpriseLibrary.Data.Sql; SqlDatabase db = null; try { db = new SqlDatabase(ssortingngConnection); db.ExecuteNonQuery("storedprocedure", someParams); } catch (Exception ex) { } 

Je ne peux pas faire quelque chose comme

 finally { if (db != null) { ((IDisposable)db).Dispose(); } } 

Alors … comment puis-je éviter les fuites de connection?

Je vous remercie.

Vous pouvez mettre le code dans le bloc "using". Cela assurera la connection fermée après la fin.

 using Microsoft.Practices.EnterpriseLibrary.Data.Sql; SqlDatabase db = new SqlDatabase(ssortingngConnection); using (DbConnection con = db.CreateConnection()) { db.ExecuteNonQuery("storedprocedure", someParams); } 

ou vous pouvez utiliser le con.Close ().

Généralement, vous n'avez pas à vous soucier de la fermeture de la connection, car le bloc d'access aux données gère les connections plus efficacement. cochez la section "Gestion des connections" dans le lien ci-dessous: http://msdn.microsoft.com/fr-fr/library/ff953187(v=pandp.50).aspx

 Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetStoredProcCommand("GetProductsByCategory"); db.AddInParameter(cmd, "@requestId", DbType.Int32, requestId); db.ExecuteNonQuery(cmd); 

La bibliothèque d'entreprise gère les connections de fermeture pour vous, sauf dans le cas de l'utilisation de lecteurs de données. Lors de l'utilisation d'un IDataReader, vous devez utiliser la méthode close ou l'utilisation pour appeler la disposition (même chose que l'appel)

 Database db = DatabaseFactory.CreateDatabase(); DbCommand cmd = db.GetSqlSsortingngCommand("Select Name, Address From Customers"); using (IDataReader reader = db.ExecuteReader(cmd)) { // Process results } 

La disposition dans ce cas fermera la connection. Ils ont une grande section sur la gestion des connections dans la documentation.

https://msdn.microsoft.com/en-us/library/ff648933.aspx