我有一个非常简单的存储过程,我用它来测试一些东西:
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");
抛出并处理异常,那么问题可能与复杂类型有关。
有没有人遇到/设法解决这个问题?
答案 0 :(得分:1)
ExecuteFunction返回一个实体集,但执行会延迟,直到实际需要它为止。所以在你的例子中,函数永远不会被实际调用。
尝试
context.ExecuteFunction<TestSPROCResult>("TestSPROC").ToList();
强制执行