2017-08-31 99 views
0

我收到以下错误:错误调用存储过程从实体框架

Procedure or function 'dsp_DeleteAgreementPackage' expects parameter '@AgreementPackageID', which was not supplied.

这里是我的代码:

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

我也试着用替换最后一行:

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

我从两种方式得到相同的错误。我已验证param1确实包含整数值和参数名称@AgreementPackageID。任何想法我做错了什么?

回答

1

我想你没有在提供的SQL命令字符串中包含任何参数(参数是必需的,而不是简单地使用存储过程名称)。

param1.ParameterName = "AgreementPackageID"; 

类似的问题:

EntityFramework Procedure or function '' expects parameter '', which was not supplied

Call stored procedure using ExecuteSqlCommand (expects parameters which was not supplied)

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

您也可以从ParameterName如有必要,除去@标志:下面给出尝试使用ExecuteSqlCommand给定@AgreementPackageID参数