1

私はストアドプロシージャを使用しており、Microsoft Entity Framework Coreが提供する "FromSql"機能を使用してストアドプロシージャを実行しています。Entity FrameworkはSQL例外をキャッチしません

SQL例外が存在する場合、Entity Frameworkは例外をまったくキャッチしません。

以下の例では、ストアドプロシージャ「GetAppSections」がSQLにありません。アプリケーションを実行すると、デバッグモードでローカルウィンドウ内に「missing stored proc」エラーがあります。

しかし、ロジックは「キャッチ」ブロックには決して行きません.Entity Frameworkは単に「FromSql」コマンドを実行し、空のオブジェクトを返します。 「catch」ブロックは決してヒットしません。

なぜEntity FrameworkがSQLから "stored proc missing"例外をキャッチしていないのでしょうか?

public virtual IEnumerable<appSection> GetSections() 
    { 
     try 
     { 

      return _context.appSections.FromSql("dbo.GetAppSections @p0", 
            parameters: new[] { _standarParams.userID.ToString()}).AsEnumerable(); 

     } 
     catch (Exception ex) 
     { 
      // error handling code 
     } 
    } 
+0

は、それが復帰することによって抑制されていますか?おそらく代わりにvarを使用して結果をキャプチャしようとします。 –

+0

ありがとうございます。投稿する前に試してみました。 Steveが提案したようにIEnumerableをToListに変更しました。 – mvc234

答えて

1

あなたは延期されIEnumerableに戻ってきています。 IEnumerable(ToList、ForEachなど)に実際にアクセスするコードの周りにtry catchブロックが必要です。

herehere

+0

ありがとうございました! AsEnumerable()をToList()に変更しました。私は今例外をキャッチできます! – mvc234

関連する問題