title: Enforce only single row returned from DataReader
body: <p>I seem to write this quite a lot in my code:</p>
  
  <pre><code>using (var reader = cmd.ExecuteReader())
  {
      if (reader.Read())
      {
          result = new User((int)reader["UserId"], reader["UserName"].ToString());
      }
  
      if (reader.Read())
      {
          throw new DataException("multiple rows returned from query");
      }
  }
  </code></pre>
  
  <p>Is there some built in way to do this that I don't know about? </p>