Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架调用存储过程时出现问题:未提供参数_C#_Entity Framework - Fatal编程技术网

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对象中已经有名称,你知道为什么我必须显式定义参数吗?