C# 实体框架-ExecuteFunction<;T>;返回null而不是异常

C# 实体框架-ExecuteFunction<;T>;返回null而不是异常,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我有一个非常简单的存储过程,用于测试某些内容: ALTER PROCEDURE [cms].[TestSPROC] AS BEGIN DECLARE @Test INT SELECT *,CONVERT(NUMERIC(3,2),15) AS Test FROM Viper.Currencies END SP应返回算术溢出异常,并在SQL Server Management studio中执行此操作 问题: 使用实体框架的.ExecuteFunction方法在我的应用程

我有一个非常简单的存储过程,用于测试某些内容:

ALTER PROCEDURE [cms].[TestSPROC]
AS
BEGIN

DECLARE @Test INT 

    SELECT *,CONVERT(NUMERIC(3,2),15) AS Test
    FROM Viper.Currencies

END
SP应返回算术溢出异常,并在SQL Server Management studio中执行此操作

问题: 使用实体框架的
.ExecuteFunction
方法在我的应用程序中调用SP时,将返回null,而不是抛出EntityException。(使用函数导入时也会发生同样的情况,但实际上只是调用
.ExecuteFunction

这是我的密码:

using (CmsEntities context = new CmsEntities())
{
    try
    {
        context.ExecuteFunction<TestSPROCResult>("TestSPROC");
    }
    catch (EntityException exc)
    {
        MessageBox.Show(exc.Message);
    }
}
使用(cmsenties context=new cmsenties())
{
尝试
{
ExecuteFunction(“TestSPROC”);
}
捕获(EntityException exc)
{
MessageBox.Show(exc.Message);
}
}
如果我调用
context.ExecuteFunction(“TestSPROC”)抛出并处理异常,因此问题可能与复杂类型有关


是否有人遇到/设法解决过此问题?

ExecuteFunction返回一个实体集,但执行会延迟到实际需要时。因此,在您的示例中,函数从未被实际调用

试一试

context.ExecuteFunction(“TestSPROC”).ToList();

要强制执行,ExecuteFunction将返回一个实体集,但执行会延迟到实际需要时。因此,在您的示例中,函数从未被实际调用

试一试

context.ExecuteFunction(“TestSPROC”).ToList();

强制执行

这解决了我的问题的问题,但在某些情况下并没有解决EF忽略算术溢出异常的根本问题。虽然接受了,因为它对这个案例有效,谢谢:)这解决了我问题的问题,但在某些情况下并没有解决EF忽略算术溢出异常的根本问题。但已接受,因为它适用于此案例,谢谢:)
context.ExecuteFunction<TestSPROCResult>("TestSPROC").ToList();