实体框架 - ExecuteFunction <t>返回null而不是异常</t>

时间:2012-08-03 09:10:33

标签: 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<T>方法在我的应用程序中调用SP时,将返回 null而不是抛出的EntityException 。 (使用函数import时会发生同样的事情,但实际上只是调用.ExecuteFunction<T>

这是我的代码:

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

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

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

1 个答案:

答案 0 :(得分:1)

ExecuteFunction返回一个实体集,但执行会延迟,直到实际需要它为止。所以在你的例子中,函数永远不会被实际调用。

尝试

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

强制执行