title: ADO.NET Mapping From SQLDataReader to Domain Object?
body: <p>I have a very simple mapping function called "BuildEntity" that does the usual boring "left/right" coding required to dump my reader data into my domain object. (shown below) My question is this - If I don't bring back every column in this mapping as is, I get the "System.IndexOutOfRangeException" exception and wanted to know if ado.net had anything to correct this so I don't need to bring back every column with each call into SQL ... </p>
  
  <p>What I'm really looking for is something like "IsValidColumn" so I can keep this 1 mapping function throughout my DataAccess class with all the left/right mappings defined - and have it work even when a sproc doesn't return every column listed ...</p>
  
  <pre><code>Using reader As SqlDataReader = cmd.ExecuteReader()
    Dim product As Product
    While reader.Read()
      product = New Product()
      product.ID = Convert.ToInt32(reader("ProductID"))
      product.SupplierID = Convert.ToInt32(reader("SupplierID"))
      product.CategoryID = Convert.ToInt32(reader("CategoryID"))
      product.ProductName = Convert.ToString(reader("ProductName"))
      product.QuantityPerUnit = Convert.ToString(reader("QuantityPerUnit"))
      product.UnitPrice = Convert.ToDouble(reader("UnitPrice"))
      product.UnitsInStock = Convert.ToInt32(reader("UnitsInStock"))
      product.UnitsOnOrder = Convert.ToInt32(reader("UnitsOnOrder"))
      product.ReorderLevel = Convert.ToInt32(reader("ReorderLevel"))
      productList.Add(product)
    End While
  </code></pre>