Re[2]: Имена создаваемых параметров
От: Аноним  
Дата: 10.11.05 16:23
Оценка:
Здравствуйте, 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?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.