2

我在我的测试应用程序中使用实体框架调用存储过程:

using (CmsEntities context = new CmsEntities())
            {

                try
                {
                    var test = context.TestSPROC().;
                    MessageBox.Show(test.ToString());
                }
                catch (EntityException exc)
                {
                    MessageBox.Show(exc.Message);
                }
            }

在我的存储过程中,我所做的只是将一个 int 转换为一个数字,目的是生成一个算术溢出异常。我尝试通过两种方式做到这一点:

a) 使用转换函数设置变量并选择该变量。

ALTER PROCEDURE [cms].[TestSPROC]
AS
BEGIN

DECLARE @Test INT 
SET @Test=CONVERT(NUMERIC(3,2),15)
    SELECT @Test AS Test
END

b) 在选择期间执行转换

ALTER PROCEDURE [cms].[TestSPROC]
AS
BEGIN
    SELECT CONVERT(NUMERIC(3,2),15) AS Test
END

它们都在 SQL Server Management Studio 中引发算术溢出异常,问题是在 Visual Studio 2010 中捕获异常。

使用方法 a) EntityException 被捕获并可以处理,但是使用方法 b) 异常被忽略并且应用程序继续运行,就好像没有问题一样。所以在我看来,实体框架似乎以某种方式隐藏了错误。

4

0 回答 0