Я обнаружил, что если вы используете параметры со значениями по умолчанию, некоторые библиотеки не могут обрабатывать.
Например, у нас есть приложение, которое использует более старую версию метода доступа к данным Microsoft Enterprise Library, которая позволяет передавать параметры в виде массива.
Сбой, если количество элементов в массиве не совпадает точно с количеством параметров хранимой процедуры, независимо от того, являются ли некоторые «необязательными» или нет.
В таких случаях нужно использовать прямой ADO.NET и использовать cmd.Parameters.AddWithValues("@parameterName", value)
синтаксис для обязательных параметров хранимой процедуры. При использовании этого метода вам не нужно будет добавлять параметры команды для «необязательных» параметров хранимой процедуры.