Entity Framework SQL 未提供参数
Entity Framework SQL Parameters not getting supplied
此 thread 提供了多种向存储过程提供参数的方法。
None 他们为我工作。
这个有效:
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();
错误消息是未提供参数。
已经尝试了所有我能想到的变体,但仍然收到相同的错误消息。
这是使用 Code First,因此不需要导入。 SP找到了,只是缺少参数。
你把存储过程导入到edmx了吗?
在我们为存储过程创建的实现中,它创建如下参数:
var inputIdParameter = inputId.HasValue ?
new ObjectParameter("InputId", inputId) :
new ObjectParameter("InputId", typeof(int));
存储过程函数的结果是这样给出的
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<T>("[SP_NAME]", inputIdParameter);
解决方案原来是更改存储过程中参数的顺序,以便可选参数位于必需参数之后(就像在 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
此 thread 提供了多种向存储过程提供参数的方法。
None 他们为我工作。
这个有效:
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();
错误消息是未提供参数。
已经尝试了所有我能想到的变体,但仍然收到相同的错误消息。
这是使用 Code First,因此不需要导入。 SP找到了,只是缺少参数。
你把存储过程导入到edmx了吗?
在我们为存储过程创建的实现中,它创建如下参数:
var inputIdParameter = inputId.HasValue ?
new ObjectParameter("InputId", inputId) :
new ObjectParameter("InputId", typeof(int));
存储过程函数的结果是这样给出的
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<T>("[SP_NAME]", inputIdParameter);
解决方案原来是更改存储过程中参数的顺序,以便可选参数位于必需参数之后(就像在 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