简体   繁体   English

从实体框架调用存储过程时出错

[英]Error calling stored procedure from Entity Framework

I'm receiving the following error: 我收到以下错误:

Procedure or function 'dsp_DeleteAgreementPackage' expects parameter '@AgreementPackageID', which was not supplied. 过程或函数“ dsp_DeleteAgreementPackage”需要未提供的参数“ @AgreementPackageID”。

Here's my code: 这是我的代码:

var param1 = new SqlParameter();
param1.ParameterName = "@AgreementPackageID";
param1.SqlDbType = SqlDbType.Int;
param1.SqlValue = package.Id;
_context.Database.ExecuteSqlCommand("dsp_DeleteAgreementPackage", param1);

I've also tried replacing the last line with: 我也尝试过将最后一行替换为:

_context.Database.ExecuteSqlCommand("dsp_DeleteAgreementPackage", new object[] { param1 });

I get the same error both ways. 两种方式我都遇到相同的错误。 I've verified that param1 does include the integer value and a parameter name of @AgreementPackageID . 我已验证param1确实包含整数值和@AgreementPackageID参数名称。 Any idea what I'm doing wrong? 知道我在做什么错吗?

I think you're not including any parameter inside provided SQL command string (the parameters are required instead of simply using stored procedure name). 我认为您没有在提供的SQL命令字符串中包含任何参数(参数是必需的,而不仅仅是使用存储过程的名称)。 Try using ExecuteSqlCommand with given @AgreementPackageID parameter as given below: 尝试将ExecuteSqlCommand与给定的@AgreementPackageID参数一起使用,如下所示:

_context.Database.ExecuteSqlCommand("EXEC dsp_DeleteAgreementPackage @AgreementPackageID", param1);

Also you can remove @ sign from ParameterName if necessary: 另外,如有必要,您也可以从ParameterName删除@符号:

param1.ParameterName = "AgreementPackageID";

Similar issues: 类似问题:

EntityFramework Procedure or function '' expects parameter '', which was not supplied EntityFramework过程或函数“期望参数”,未提供

Call stored procedure using ExecuteSqlCommand (expects parameters which was not supplied) 使用ExecuteSqlCommand调用存储过程(期望未提供的参数)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM