title: Get a single record from SQL Server the correct way
body: <p>I'm using Ado to retrieve a single record by id. Observe:</p>
  
  <pre><code>public async Task&lt;Image&gt; GetImage(int id)
  {
      var image = new Image();
  
      using (SqlConnection conn = new SqlConnection(ConnectionString))
      {
          conn.Open();
  
          string sql = @" SELECT * FROM Images where id = @id";
  
          using (SqlCommand comm = new SqlCommand(sql, conn))
          {
              comm.Parameters.AddWithValue("@id", id);
  
              var reader = await comm.ExecuteReaderAsync();
  
              int ordId = reader.GetOrdinal("id");
              int ordName = reader.GetOrdinal("name");
              int ordPath = reader.GetOrdinal("path");
  
              while (reader.Read())
              {
                  image.Id = reader.GetInt32(ordId);
                  image.Name = reader.GetString(ordName);
                  image.Path = reader.GetString(ordPath);
              }
  
              return image;
          }
      }
  }
  </code></pre>
  
  <p>As you can see I am using While to iterate through the records. Since while is signifying there may be more than one record to iterate I believe this may be the wrong way to get get a single record. Considering ADO has ExecuteScalar for one row one field maybe they have a specified way for one row multiple fields. Is there a specified way to get a single record in ADO?</p>