C#实体框架在ExecuteFunction上引发错误

时间:2018-11-27 17:22:45

标签: c# sql-server entity-framework

快速更新,我逐行浏览,看到“函数评估需要所有线程都可以运行”。

尝试使用C#中的Entity Framework执行存储过程。对于存储过程中的SELECT语句,我已经成功地做到了这一点,但是对于UPDATE来说却不是那么成功。

我已验证以下内容:

  • 存储过程在SQL Server中可以使用我手动输入的值
  • 存储过程期望bigint作为参数,因此输入将作为INT64发送。

我假设EF是围绕存储过程构建的方法,它遍历了除return语句之外的所有部分,在那里我得到了一个相当普遍的invalidexception错误。

对此有何想法?我可以提供一些存储过程和方法上的代码:

 return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SP_HERE", int64, int64, int64, int64);
    }

这是存储过程:

CREATE PROCEDURE some_SP
    @var1 bigint,
    @var2 bigint,
    @var3 bigint,
    @var4 bigint 
AS
BEGIN
    --SET NOCOUNT ON;

然后,我粘贴的各种更新语句是原始创建的。

任何提示都可以帮到您。不知道是什么原因造成的,深入研究异常似乎没有任何帮助。

谢谢大家!

1 个答案:

答案 0 :(得分:1)

从存储过程中返回@@ ROWCOUNT。您遇到的问题很可能与存储的proc返回的类型与ExecuteFunction方法期望的返回值之间的不匹配有关。