EF 6.0中的函数导入无法按预期工作

时间:2015-02-16 08:47:45

标签: c# sql-server entity-framework stored-procedures

我有一个存储过程,它有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 可能的解决方案是什么?

0 个答案:

没有答案