0

我有以下存储过程:

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();

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

执行此行时,出现以下异常:

过程或函数“USP_U_Pricing”需要参数“@ProductId”,但未提供该参数。

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

你能帮我吗?

编辑:参数是一个包含参数信息的数组。它被填充是因为我用这个签名调用了一个方法:

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

将 pProductId 作为参数传递:

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

1 回答 1

3

你能试试这个。

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

顺便说一句,在您的代码中,我看不到传递给 SqlQuery 的“参数”参数的创建。

于 2012-08-05T22:45:41.300 回答