title: Implementation differences between ExecuteDataReader and ExecuteResultSet
body: <p>I have a series of helper classes for data access and I try to ensure that they function as consistently as possible across all the major providers such as SQL Server, Oracle and now SQL CE.</p>
  
  <p>However one thing I noticed is that if I call <code>ExecuteReader</code> on a <code>SqlCeCommand</code> as opposed to a <code>SqlCommand</code> that I don't get back a <code>DataReader</code> that I can test with <code>HasRows()</code></p>
  
  <p>Looking at the documentation it says that in order to get a <code>DataReader</code> that I can test in such a fashion I should use <code>ExecuteResultSet</code> with a <code>ResultSetOptions</code> parameter set to <code>ResultSetOptions.Scrollable</code>. The issue here is that there's no overload that takes a <code>CommandBehaviour</code> as a parameter which is what I normally do to ensure that when I dispose of the <code>DataReader</code> in my DAL classes the connection gets closed.</p>
  
  <p>What is the recommended best practice here? Should I wrap my call to <code>ExecuteResultSet</code> in a <code>using</code> construct so that when the DAL code is done using it that it automatically disposes? Is there some alternative that I'm missing?</p>