Dispose object that has been instantiated as method parameter c#

后端 未结 2 1218
陌清茗
陌清茗 2021-01-18 20:51

I have the following classes:

private static readonly string ConnectionString = \"Dummy\";
public static SqlConnection GetConnection()
{
    SqlConnection Co         


        
2条回答
  •  佛祖请我去吃肉
    2021-01-18 21:40

    Description

    If you dispose your SqlDataAdapter it does not dispose the SqlConnection too because its not clear if you want to use the connection again. You have to change your design to get this done.

    I suggest to pass the SqlConnection to the GetDataAdapter function.

    Sample

    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;
    }
    

提交回复
热议问题