2

假设我有以下代码:

private AdomdDataReader ExecuteReader(string query)
{
    var conn = new AdomdConnection(ConnectionString);
    conn.Open();
    var cmd = new AdomdCommand(query, conn);
    cmd.Parameters.Add("Foo", "Bar");
    return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}

然后在使用中,您将阅读器包装在一个using语句中:

using (var reader = ExecuteReader("..."))
  ...

这与每次手动打开连接并执行阅读器不同:

using(var conn = new AdomdConnection(ConnectionString))
{
    conn.Open();
    using(var cmd = new AdomdCommand(query, conn))
    {
        cmd.Parameters.Add("Foo", "Bar");
        var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        ...
    }
}

所以我基本上只是想减少从数据库中读取许多类似查询的样板。我这样做是否会使自己暴露在资源泄漏中?

4

0 回答 0