2015-03-16 3 views
0

Это thread дает несколько способов предоставления параметра хранимой процедуре.Entity Framework SQL Параметры не получаются

Ни один из них не работает для меня.

Это работает:

this.PayrollContext.Database.SqlQuery<CSRRateEntity>("ord_getCSRRate @csr_num = '4745', @ord_pay_period_id = 784").ToList(); 

Это не:

return this.PayrollContext.Database.SqlQuery<CSRRateEntity>("Exec ord_getCSRRate @csr_num, @ord_pay_period_id", 
      new SqlParameter("csr_num", "4745"), 
      new SqlParameter("ord_pay_period_id", 784) 
      ).ToList(); 

Сообщение об ошибке в том, что параметр не входит в комплект.

Пробовал все варианты, о которых я могу думать, и до сих пор получаю такое же сообщение об ошибке.

Это первый код, поэтому импорт не требуется. SP найден, просто отсутствуют параметры.

ответ

0

Решение оказалось изменить порядок параметров в хранимой процедуре, чтобы дополнительные параметры поступали после необходимых параметров (например, в C#).

работы:

ALTER procedure [dbo].[ord_GetCSRRate]@ord_pay_period_id int,@csr_num varchar(10) = null, @csr_id int = null, @update_csr_pay_flag bit = 0 

не работает:

ALTER procedure [dbo].[ord_GetCSRRate]@csr_num varchar(10) = null, @ord_pay_period_id int, @csr_id int = null, @update_csr_pay_flag bit = 0, @recursion_flag bit = 0 
0

Вы импортировали хранимую процедуру в edmx?

В реализации, что мы для хранимой процедуры она создает параметры, как это:

var inputIdParameter = inputId.HasValue ? 
     new ObjectParameter("InputId", inputId) : 
     new ObjectParameter("InputId", typeof(int)); 

Результат хранимой функции процедуры дается как этот

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<T>("[SP_NAME]", inputIdParameter); 
Смежные вопросы