C# 调用execute后立即打开sql连接

C# 调用execute后立即打开sql连接,c#,sql,sql-server,C#,Sql,Sql Server,考虑以下函数,该函数返回一个带有闭合连接的sql命令 public static SqlCommand CreateTableCommand(this IList<Columns> Columns,string connectionString=null) { //. //. //. var command = new SqlCommand(query.ToString()); command.Parameters.AddWithValue("@tabl

考虑以下函数,该函数返回一个带有闭合连接的sql命令

public static SqlCommand CreateTableCommand(this IList<Columns> Columns,string connectionString=null)
{
   //.
   //.
   //.
   var command = new SqlCommand(query.ToString());
   command.Parameters.AddWithValue("@tablename",T.Name);
   command.Connection = new SqlConnection(connectionString??App.db.GetConnectionString());
   return command;
}

在调用
ExecuteNonQuery()
ExecuteScalar()
之前,是否有方法自动打开连接?我不想返回打开的连接,因为我可能不会立即调用execute

    public static int MyExecuteNonQuery(this SqlCommand command)
    {
        command.Connection.Open();
        var buff = command.ExecuteNonQuery();
        command.Connection.Close();

        return buff;
    }

看起来有点反模式。您应该首先了解为什么要关闭连接,并为此编写一个包装器。@RGraham我认为编写一个扩展方法到sql命令,打开连接并调用ExecuteOnQuery()或任何其他Execute是一个不错的选择,但是我要求确保是否可以在不编写其他函数的情况下指定行为谁将关闭连接?@RGraham SqlCommand可以关闭连接,因为他知道要关闭哪个连接used@RGraham扩展方法本身类似于公共静态对象SqlCommand(此SqlCommand命令,enum commandtype)并在ExecuteNonQuery()或ExecuteScalar()执行读取器之间切换大小写以选择其他函数
    public static int MyExecuteNonQuery(this SqlCommand command)
    {
        command.Connection.Open();
        var buff = command.ExecuteNonQuery();
        command.Connection.Close();

        return buff;
    }