使用Entity Framework调用存储过程的问题:期望未提供参数

时间:2012-08-05 22:29:10

标签: c# entity-framework

我有以下存储过程:

CREATEA PROCEDURE USP_U_Pricing 
(  
@ProductId int 
)  
AS  
BEGIN
....
END

我像这样设置DbParameter:

var pProductId = dataProvider.GetParameter(); //This returns a DbParameter
pProductId.ParameterName = "@ProductId";
pProductId.Value = productId;
pProductId.DbType = DbType.Int32;

并调用此程序:

this.Database.SqlQuery<TEntity>("USP_U_Pricing", parameters).ToList();

其中,定价是SP名称,参数是仅包含pProduct对象的数组。它在那里,我查了一下。

执行此行时,我收到以下异常:

  

程序或函数'USP_U_Pricing'需要参数'@ProductId',这是未提供的。

我一直在阅读并测试不同的方法来设置参数,但没有结果。 如果我设置了两个参数,一个叫做ProductId,另一个叫@ProductId,我得到一个错误,参数名称应该是唯一的....

你能帮我吗?

EDIT:参数是包含参数信息的数组。填充它是因为我使用此签名调用方法:

 ExecuteStoredProcedureList<TEntity>(string commandText, params object[] parameters)

将pProductId作为参数传递:

dbContext.ExecuteStoredProcedureList<PricingInfo>(
                "USP_U_Pricing",
                pProductId);

1 个答案:

答案 0 :(得分:3)

你可以尝试一下。

this.Database.SqlQuery<TEntity>("EXEC USP_U_Pricing @ProductId", pProductID); 

顺便说一下,在你的代码中,我看不到传递给SqlQuery的'parameters'参数的创建。