У меня была эта проблема с моей Visual Studio 2015. Я снова удалил и снова установил диспетчер пакетов NuGet. Это сработало для меня.
Попробуйте убедиться, что тип команды установлен в хранимую процедуру.
mycommand.CommandType = System.Data.CommandType.StoredProcedure;
Command1.CommandType = System.Data.CommandType.StoredProcedure
Это заставит ExecuteReader выполнить exec вместо того, чтобы просто попробовать его как плоскую команду.
Вы получите это исключение, если значение переменной 'userName' равно null
Если значение null действительное, тогда вместо DBNull.Value передайте db:
command1.Parameters.Add(new SqlParameter("@UserName", (userName ?? DBNull.Value));
По умолчанию свойство CommandText
должно содержать полную команду SQL, а не только имя хранимой процедуры.
Вы можете изменить это, чтобы установить SqlCommand
в CommandType
в StoredProcedure
.
В качестве альтернативы вы можете явно передать параметры, изменив CommandText
на "someStoredProcedure @UserName, @ProductCode"
; это полный оператор SQL и будет работать с по умолчанию CommandType
из Text
.
EDIT: Я просто попробовал это и единственный способ получить это сообщение об ошибке без установки CommandType
на StoredProcedure
(что он не сделал), если CommandText
EXEC someStoredProcedure
. Передача параметра null
дает другую ошибку.