我有以下存储过程:
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);
答案 0 :(得分:3)
你可以尝试一下。
this.Database.SqlQuery<TEntity>("EXEC USP_U_Pricing @ProductId", pProductID);
顺便说一下,在你的代码中,我看不到传递给SqlQuery的'parameters'参数的创建。