Я думаю, что это связано с возможностью неправильного использования, описанной в документах MSDN, на которые вы ссылались:
Будьте осторожны при использовании этого
перегрузка
SqlParameterCollection.Add метод для
указать целочисленные значения параметров
Потому что эта перегрузка принимает значение
Тип объекта, вы должны преобразовать
интегральное значение для типа объекта, когда
значение равно нулю, как следующий C #
пример демонстрирует.
parameters.Add("@pname", Convert.ToInt32(0));
Если вы не выполните это преобразование,
компилятор предполагает, что вы
пытаясь вызвать
SqlParameterCollection.Add (string,
SqlDbType) перегрузка.
На самом деле документы, на которые вы ссылались для нового API, говорят так:
Перегрузка Add, которая принимает
строка и объект устарели
из-за возможной неопределенности с
SqlParameterCollection.Add overload
который принимает String и SqlDbType
значение перечисления, где передача
целое число со строкой может быть
интерпретируется как либо
значение параметра или соответствующий
Значение SqlDbType.