1

我有一个非常简单的存储过程,我用它来测试一些东西:

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<T>方法调用 SP 时,返回 null 而不是抛出 EntityException。(使用函数导入时会发生同样的事情,但本质上只是调用.ExecuteFunction<T>

这是我的代码:

using (CmsEntities context = new CmsEntities())
{
    try
    {
        context.ExecuteFunction<TestSPROCResult>("TestSPROC");
    }
    catch (EntityException exc)
    {
        MessageBox.Show(exc.Message);
    }
}

如果我调用context.ExecuteFunction("TestSPROC");异常被抛出并处理,那么问题可能与复杂类型有关。

有没有人遇到过/设法解决这个问题?

4

1 回答 1

1

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

尝试

context.ExecuteFunction<TestSPROCResult>("TestSPROC").ToList();

强制执行

于 2012-08-03T10:22:09.280 回答