c# - example - ¿Hay alguna diferencia entre SqlConnection.CreateCommand y el nuevo SqlCommand?
sqlconnection conn=new sqlconnection (4)
En .Net, ¿hay alguna diferencia funcional entre crear un nuevo objeto SqlCommand
y adjuntarle una SqlConnection
y llamar a CreateCommand()
en un objeto SqlConnection
existente?
Ellos hacen la misma cosa. La razón detrás de SqlConnection.CreateCommand
es implementar el patrón de fábrica.
Esto puede ser evidente, pero solo para estar completo, hay una diferencia. Si crea un SqlCommand, puede pasar el CommandText como un parámetro. Si permite que SqlConnection CreateCommand, no hay ninguna disposición para proporcionar el CommandText. Ya que solo puede establecer la propiedad CommandText de SqlCommand, la distinción es bastante delgada, pero existe.
SqlConnection db = new SqlConnection();
SqlCommand cmd = db.CreateCommand();
cmd.CommandText = "select @@version";
o
SqlConnection db = new SqlConnection();
SqlCommand cmd = new SqlCommand("select @@version", db);
Funcionalmente son exactamente lo mismo.
Sin embargo, SqlConnection.CreateCommand()
permite ser más independiente de qué tipo de DB está utilizando. Por ejemplo, en lugar de pasar una instancia de SqlConnection
, podría pasarla como DbConnection
que generaría un DbCommand
.
No, son lo mismo.
Desmonté SqlConnection.CreateCommand
y encontré esto:
public SqlCommand CreateCommand()
{
return new SqlCommand(null, this);
}
Lo que prueba que realmente son lo mismo.