Я использую EF6, и мне нужно выполнить хранимую процедуру. Он принимает два параметра:EF6 Хранимая процедура не принимает параметры
mIIN varchar(12)
, который вводится строкаmXMLOutput varchar(max)
, который является результатом выполнения
Он отлично работает, когда я называю его из Management Studio.
Однако, когда я использую следующий код:
var iinParameter = new SqlParameter("@mIIN", SqlDbType.VarChar, 12) { Value = "123456123456" };
var outputParameter = new SqlParameter("@mXMLContent", SqlDbType.VarChar, -1) { Direction = ParameterDirection.Output };
_dbContext.Database.ExecuteSqlCommand("GetInfo", iinParameter, outputParameter);
, что приводит к ошибке
Процедура или функция 'GetInfo' ожидает параметр '@mIIN', которое не было поставлено
EF6 содержит следующие сообщения:
Started transaction at 15.12.2015 14:27:27 +06:00
GetInfo
-- @mIIN: '123456123456' (Type = AnsiString, IsNullable = false, Size = 12)
-- @mXMLContent: '' (Type = AnsiString, Direction = Output, IsNullable = false, Size = -1)
-- Executing at 15.12.2015 14:27:27 +06:00
-- Failed in 2 ms with error: Procedure or function 'GetInfo' expects parameter '@mIIN', which was not supplied.
Что может вызвать эту проблему? Я передаю этот параметр, почему он не принимает его?
Ницца. Это действительно работает, даже без 'exec' в начале. Почему я должен указывать аргументы таким образом? Не передают ли эти аргументы самим хранимой процедуре? –
К сожалению нет. Он должен выйти замуж за имя параметра в SqlParameter с текстом команды. – strickt01