Я пытаюсь использовать SqlDataReader (я прекрасно осведомлен о красоте Linq и т. Д., Но приложение, которое я создаю, частично является Sql Generator, поэтому Linq не соответствует моим потребностям).К сожалению, я не уверен, что лучшие практики при использовании SqlDataReader.Я использую код, подобный следующему, в нескольких местах моего кода:
using (SqlDataReader reader = ...)
{
int ID = reader.GetInt32(0);
int tableID = reader.GetInt32(1);
string fieldName = reader[2] as string;
...//More, similar code
}
Но он кажется очень нестабильным.Если база данных изменяется (что на самом деле крайне маловероятно в этом случае), код нарушается.Есть ли эквивалент SQlDataReader GetInt32, GetString, GetDecimal, который принимает имя столбца вместо индекса?Что считается лучшей практикой в этом случае?Что быстрее?Эти части моего кода являются наиболее интенсивными по времени частями моего кода (я его профилировал несколько раз), поэтому скорость важна.
[EDIT]
Я знаю об использовании индексатора со строкой, я неправильно сформулировал вышесказанное.Я бегу в медленное время выполнения.Мой код работает нормально, но я ищу какой-нибудь способ, которым я могу украсть несколько секунд внутри этих циклов.Замедлит ли меня доступ через строку?Я знаю, что db-доступ - это основная операция, требующая значительных временных затрат, и я ничего не могу с этим поделать, поэтому я хочу сократить время обработки для каждого элемента, к которому осуществляется доступ.
[EDIT]
Я решил просто запустить GetOrdinal, если у кого-то нет более конкретных примеров.Я проведу тест эффективности позже.Я постараюсь не разглашать их, когда я действительно запускаю тесты.