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 内でこれを行います。

問題: アプリケーションで Entity Framework の.ExecuteFunction<T>メソッドを使用して SP を呼び出すと、EntityException がスローされる代わりに null が返されます。(関数 import を使用する場合も同じことが起こりますが、基本的には.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 に答える