处理已实例化为方法参数c#的对象

Xea*_*eaz 5 c# parameters dispose

我有以下课程:

private static readonly string ConnectionString = "Dummy";
public static SqlConnection GetConnection()
    {
        SqlConnection Connection = new SqlConnection(ConnectionString);
        return Connection;
    }

public static SqlDataAdapter GetDataAdapter(string Query)
    {
        SqlDataAdapter Adapt = new SqlDataAdapter(Query, GetConnection());
        return Adapt;
    }
Run Code Online (Sandbox Code Playgroud)
  • 在我的SqlDataAdapter构造函数中将GetConnection()作为参数传递时,如何处置实例化的SqlConnection对象?
  • 当我在调用GetDataAdapter()的方法中处理我的Adapt对象时,它会自动处理吗?
  • 如果无法处理它,您如何建议继续?

谢谢你的帮助.

dkn*_*ack 1

描述

如果您处置您的SqlDataAdapter 它也不会处置它SqlConnection,因为不清楚您是否想再次使用该连接。您必须更改设计才能完成此任务。

我建议通过SqlConnection给GetDataAdapter函数。

样本

static void Main(string[] args)
{ 
    using (SqlConnection connection = GetConnection()) 
    {
        using (SqlDataAdapter adapter = GetDataAdapter("YourQuery", connection)) 
        {

        }
        // SqlDataAdapter is disposed
    }
    // SqlConnection is disposed
}

private static readonly string ConnectionString = "Dummy";
public static SqlConnection GetConnection()
{
    SqlConnection Connection = new SqlConnection(ConnectionString);
    return Connection;
}

public static SqlDataAdapter GetDataAdapter(string Query, SqlConnection connection)
{
    SqlDataAdapter Adapt = new SqlDataAdapter(Query, connection);
    return Adapt;
}
Run Code Online (Sandbox Code Playgroud)