2

テスト アプリでエンティティ フレームワークを使用してストアド プロシージャを呼び出しています。

using (CmsEntities context = new CmsEntities())
            {

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

私のストアド プロシージャでは、算術オーバーフロー例外を生成する目的で int を数値に変換するだけです。私は2つの方法でこれをやってみました:

a) convert 関数を使用して変数を設定し、この変数を選択します。

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) を使用すると、例外は無視され、アプリケーションは問題がないかのように実行され続けます。そのため、Entity Framework が何らかの方法でエラーを隠しているように思えます。

4

0 に答える 0