C# 使用实体框架调用存储过程时出现问题:未提供参数
我有以下存储过程:C# 使用实体框架调用存储过程时出现问题:未提供参数,c#,entity-framework,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
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();
this.Database.SqlQuery(“USP__定价”,参数).ToList();
其中pricing是SP名称和参数,它是仅包含PPProduct对象的数组。它在那儿,我查过了
执行此行时,我得到以下异常:
过程或函数“USP___定价”需要未提供的参数“@ProductId”
我一直在阅读和测试设置参数的不同方法,但没有结果。
如果我设置了两个参数,一个名为ProductId,另一个名为@ProductId,我会得到一个错误,即参数名应该是唯一的
你能帮我吗
编辑:参数是包含参数信息的数组。之所以填充它,是因为我调用了具有此签名的方法:
ExecuteStoredProcedureList<TEntity>(string commandText, params object[] parameters)
ExecuteStoreProcedureList(string commandText,params object[]参数)
将pProductId作为参数传递:
dbContext.ExecuteStoredProcedureList<PricingInfo>(
"USP_U_Pricing",
pProductId);
dbContext.ExecuteStoreProcedureList(
“美国药典定价”,
pProductId);
你能试试这个吗
this.Database.SqlQuery<TEntity>("EXEC USP_U_Pricing @ProductId", pProductID);
this.Database.SqlQuery(“EXEC USP\U\U Pricing@ProductId”,pProductID);
顺便说一句,在您的代码中,我看不到传递给SqlQuery的“parameters”参数的创建过程。您能试试这个吗
this.Database.SqlQuery<TEntity>("EXEC USP_U_Pricing @ProductId", pProductID);
this.Database.SqlQuery(“EXEC USP\U\U Pricing@ProductId”,pProductID);
顺便说一下,在您的代码中,我看不到传递给SqlQuery的“parameters”参数的创建。有效,谢谢:)顺便问一下,如果参数在DbParameter对象中已经有名称,我为什么要显式定义参数?有效,谢谢:)顺便问一下,如果参数在DbParameter对象中已经有名称,你知道为什么我必须显式定义参数吗?