Ho il seguente codice ado.net, se utilizzo già utilizzando per avvolgere il mio DBCommand, devo chiudere esplicitamente la connessione sottostante?Will dbCommand.Close() chiuderà anche la connessione?
Grazie,
public static void ExecuteSQL(int Id)
{
Database db;
const string sqlCommand = "Stored Procedure Name";
try
{
db = DatabaseFactory.CreateDatabase();
using (DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand))
{
db.AddInParameter(dbCommand, "p_Id", DbType.Int32, Id);
db.ExecuteNonQuery(dbCommand);
**//do I have to close connection explicitely here??**
if (dbCommand.Connection.State != ConnectionState.Closed)
{
dbCommand.Connection.Close();
}
dbCommand.Connection.Dispose();
}
}
catch (Exception ex)
{
Logger.Log.Error(ex.StackTrace, ex);
throw;
}
}
Credo che @Satya sia corretto in questo caso e la tua risposta è in realtà sbagliata. – Coops
@CodeBlend: nel caso in cui qualcuno stia utilizzando Enterprise Library, allora sì, la sua risposta è corretta. Tuttavia, mentre il codice fa riferimento a classi come 'Database', il contenuto della domanda e i tag non fanno riferimento a EntLib. Di conseguenza, se le persone sono alla ricerca di una risposta alla domanda come è stato chiesto, allora sarebbe ancora corretto. –