SqlConnection.CreateCommand和新的SqlCommand之间有什么区别吗?
在.Net中,创建新的SqlCommand
对象和将SqlConnection
附加到它并在现有的SqlConnection
对象上调用CreateCommand()
之间是否存在任何function差异?
不,他们是一回事。
我反汇编了SqlConnection.CreateCommand
并发现了这个:
public SqlCommand CreateCommand() { return new SqlCommand(null, this); }
这certificate他们真的是一回事。
他们做同样的事情。 SqlConnection.CreateCommand
背后的基本原理是实现工厂模式。
在function上它们完全相同。
但是, SqlConnection.CreateCommand()
使您可以更加了解您正在使用的DB类型。 例如,不是传递SqlConnection
实例,而是可以将其作为DbConnection
传递,这将产生DbCommand
。
这可能不言而喻,但只是为了完整,存在一个区别。 如果创建SqlCommand,则可以将CommandText作为参数传递。 如果您使用SqlConnection CreateCommand,则没有提供CommandText的规定。 既然你可以设置SqlCommand的CommandText属性,那么区别很小,但确实存在。
SqlConnection db = new SqlConnection(); SqlCommand cmd = db.CreateCommand(); cmd.CommandText = "select @@version";
要么
SqlConnection db = new SqlConnection(); SqlCommand cmd = new SqlCommand("select @@version", db);