title: Method that returns DataReader -- will it cause resource leaks?
body: <p>Say I have the following code:</p>
  
  <pre><code>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);
  }
  </code></pre>
  
  <p>Then in usage, you'd wrap the reader in a <code>using</code> statement:</p>
  
  <pre><code>using (var reader = ExecuteReader("..."))
    ...
  </code></pre>
  
  <p>This would be in contrast to manually opening a connection and executing a reader each time:</p>
  
  <pre><code>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);
          ...
      }
  }
  </code></pre>
  
  <p>So I'm basically just trying to reduce boilerplate for reading many similar queries from a database.  Am I exposing myself to resource leaks by doing so?</p>