Quel modèle est meilleur pour SqlConnection
objet? Quel est le meilleur en performance? Offrez-vous un autre motif?Quel modèle est meilleur pour l'objet SqlConnection?
class DataAccess1 : IDisposable
{
private SqlConnection connection;
public DataAccess1(string connectionString)
{
connection = new SqlConnection(connectionString);
}
public void Execute(string query)
{
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = query;
command.CommandType = CommandType.Text;
// ...
command.Connection.Open();
command.ExecuteNonQuery();
command.Connection.Close();
}
}
public void Dispose()
{
connection.Dispose();
}
}
VS
class DataAccess2 : IDisposable
{
private string connectionString;
public DataAccess2(string connectionString)
{
this.connectionString = connectionString;
}
public void Execute(string query)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = connection.CreateCommand();
command.CommandText = query;
command.CommandType = CommandType.Text;
// ...
command.Connection.Open();
command.ExecuteNonQuery();
command.Connection.Close();
}
}
public void Dispose()
{
}
}
Je conseillerais * contre * ayant la classe lire la chaîne de connexion. Laissez l'application lire les informations de configuration et les transmettre au consommateur; il n'y a aucune raison de limiter la portabilité de la classe. –
@Adam: Je suis d'accord avec vous sur la * limitation * de la portabilité.Je vais modifier pour inclure un ctor qui permettrait à l'appelant de fournir la valeur. –