Мне было поручено создать код, который будет извлекать данные из базы данных с использованием устройства чтения данных, и мне любопытно, что будет наилучшей практикой между тремя методами, которые я мог бы использовать ниже для преобразования данных из моего устройства чтения данных, которое путемвыборка по умолчанию с типом объекта.
internal static RoomType SelectRoomType(int roomTypeID)
{
SqlCommand commRoomTypeSelector = ConnectionManager.MainConnection.CreateCommand();
commRoomTypeSelector.CommandType = CommandType.StoredProcedure;
commRoomTypeSelector.CommandText = "Rooms.asp_RMS_RoomType_Select";
commRoomTypeSelector.Parameters.AddWithValue("RoomTypeID", roomTypeID);
SqlDataReader dreadRoomType = commRoomTypeSelector.ExecuteReader();
if (dreadRoomType.FieldCount != 0)
{
dreadRoomType.Read();
RoomType roomType = new RoomType();
roomType.RoomTypeID = (int)dreadRoomType["RoomTypeID"];
roomType.RoomTypeName = (string)dreadRoomType["RoomType"];
roomType.IsActive = ((string)dreadRoomType["IsActive"]).ToUpper() == "Y";
roomType.LastEditDate = (string)dreadRoomType["LastEditDate"] != string.Empty ? DateTime.Parse((string)dreadRoomType["LastEditDate"]) : DateTime.MinValue;
roomType.LastEditUser = (string)dreadRoomType["LastEditUser"];
dreadRoomType.Close();
return roomType;
}
dreadRoomType.Close();
return null;
}
Что меня смущает, так это распаковка, согласно http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx Бокс и распаковка довольно дорогие и их следует избегать ,Я знаю, что мог бы использовать
int.Parse(dreadRoomType["RoomTypeID"].ToString())
вместо
roomType.RoomTypeID = (int)dreadRoomType["RoomTypeID"];
Вопрос в том, есть ли еще способы преобразования этих данных гораздо более эффективным способом, чем оба варианта и еслинет никаких возможных способов, какой из двух способов вы предпочитаете использовать.Заранее спасибо вся помощь и предложения принимаются:)