Использование .Net 4.5.2 У меня есть следующий пример кода ...
var cmd = new SqlCommand();
cmd.Parameters.Add(new SqlParameter("@CONTENTHYPERLINK", SqlDbType.VarChar, 50));
cmd.Parameters["@contentHyperlink"].Value = "hello world";
Третья ссылка вызывает IndexOutOfRangeException
исключение
Но если я использую любой из следующего (который чисто меняет регистр имени параметра) это работает!
cmd.Parameters["@CONTENTHYPERLINK"].Value = "hello world";
cmd.Parameters["@contenthyperlink"].Value = "hello world";
cmd.Parameters["@contenTHYperlink"].Value = "hello world";
Если я использую любой из следующего, это не работа ...
cmd.Parameters["@contentHyperlink"].Value = "hello world";
cmd.Parameters["@contentHYPERLINK"].Value = "hello world";
cmd.Parameters["@CONTENtHYPERLINK"].Value = "hello world";
(И есть еще много примеров, которые работают и не работают, и я не буду здесь перечислять.)
Почемуна земле делает что-то, что должно быть без учета регистра, генерировать исключение в определенных случаях?
(я понимаю, что решение этой проблемы - использовать тот, который не вызывает исключения, но я хочу знать, почему это такпроисходит)
Обновление
После изменения кода для использования верхнего регистра, то же самое произошло с другим параметром sproc ...
cmd.Parameters["@PortalLastLogon"] <-- Fails
cmd.Parameters["@portalLastlogon"] <-- Fails
cmd.Parameters["@PORTALLASTLOGON"] <-- Works
cmd.Parameters["@portallastlogon"] <-- Works
Это сводит меня с ума ... если бы у меня оставались волосы, чтобы вырваться, я был бы таким же лысым, как и я.
Может Кто-нибудь Объясните, что происходит на земле?!
У меня есть программное обеспечение с более чем 2400 параметрами sproc ... Я не могу позволить себе время обновить их все!