我有一个存储过程,它有1个输入参数和1个输出参数。
CREATE PROCEDURE [dbo].[p_GetPackageStatus]
@PackageName varchar(100),
@status int output
AS
BEGIN
SELECT TOP 1 @status = status from [SSISDB].[catalog].[executions]
WHERE package_name = @PackageName + '.dtsx'
ORDER by [execution_id] desc
END
我将它作为函数导入导入EF。但它总是返回-1作为debuging的输出。 在EF context.cs文件中,存储过程转换为如下函数,即使在模型浏览器中我已将返回类型指定为None:
public virtual int p_GetPackageStatus(string packageName, ObjectParameter status)
{
var packageNameParameter = packageName != null ?
new ObjectParameter("PackageName", packageName) :
new ObjectParameter("PackageName", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("p_GetPackageStatus", packageNameParameter, status);
}
在我的c#代码中,我以这种方式使用它:
int status = db.p_GetPackageStatus(packageName, objectParameter);
尽管存储过程在SQL中提供了正确的结果,但我总是将状态设置为-1
可能的解决方案是什么?