У меня есть очень простая функция отображения, называемая «BuildEntity», которая выполняет обычное скучное «левое/правое» кодирование, необходимое для сброса моих данных считывателя в мой объект домена. (показано ниже) Мой вопрос заключается в следующем: если я не возвращу каждый столбец в этом сопоставлении, как есть, я получаю исключение «System.IndexOutOfRangeException» и хотел бы знать, есть ли у ado.net что-то, чтобы исправить это, t нужно возвращать каждый столбец с каждым вызовом в SQL ...ADO.NET Mapping из SQLDataReader в объект домена?
Что я действительно ищу, это что-то вроде «IsValidColumn», поэтому я могу сохранить эту функцию отображения в моем классе DataAccess со всеми левыми/правыми отображения определены - и он работает даже тогда, когда sproc не возвращает каждый столбец в списке ...
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