Здравствуйте, IT, Вы писали:
IT>Там делается прямой вызов ADO.NET метода, так что...
наверно я всё-таки не правильно описал ситуацию
есть метод
private IDbDataParameter[] CreateSpParameters(string spName, object[] parameterValues)
в нём получаем список параметров хранимой процедуры
commandParameters = GetSpParameterSet(spName, true);
затем последовательно сравниваем имена параметров, которые были получены из ХП и имена параметров, которые находятся в массиве parameterValues (эти параметры мы создали при вызове, например, DBManager.SetSpCommand(...))
if (name == p.ParameterName)
{
param.Value = p.Value;
found = true;
break;
}
так вот, если в SetSpCommand мы создали параметр с именем "param1", а из ХП получили параметр "PARAM1", то переменная found после выполнения предыдущего куска кода будет равна false и выполнится следующий код
if (found == false && (
param.Direction == ParameterDirection.Input ||
param.Direction == ParameterDirection.InputOutput))
{
param.SourceColumn = name[0] == '@'? name.Substring(1): name;
}
но param.Value останется пустым и при выполнении запроса в базу будет отправлен null в качестве значения параметра "PARAM1", хотя парамерт "param1" был нами проинициализирован.
Вот я и имел ввиду, что при сравнении
name == p.ParameterName
может можно было бы придумать механизм, что бы при определённых услосиях сравнение шло case insensitive?