EntityFrameworkの例外をどこでキャッチするかを理解するのに苦労しています。私はSaveChanges
並行性の例外をカバーしていますが、他の例外(サーバーがダウンしたためのタイムアウトなど)をキャッチするための一般的なルールを見つけるのに苦労しています。
私はWindowsクライアントアプリケーションを実行しているので、例外は「エラー」Webページを吐き出すだけでなく、アプリケーションを続行するためのオプションを提供する必要があります(他のウィンドウが開いている可能性があるため、これは単純なアプリではありません)。
これは、ADO.netを直接使用する場合、非常に簡単に理解できます。接続を開いてクエリを実行するときに例外をトラップしますが、接続を開いてクエリをEF4(この場合はデータベースファースト)を使用して実行するタイミングは正確にはわかりません。)。
いくつかの単純なケースがあります(たとえば、またはIQueryable
を呼び出して、で実際に列挙子を実行する場合)が、それほど簡単には見つからない場合もあります。たとえば、WinFormコントロールにを割り当てる場合は、に依存します。コントロールの動作(私が常に制御しているわけではありません)、実際にクエリを実行する場合と実行しない場合があります(一部のコントロールは後で呼び出すときに実行します)。ToList
ToArray
IQueryable
DataSource
DataBind
試行錯誤で(または単に巨大なtry/catch
ブロックを実行して)これを実行できることはわかっていますが、これを実行するためのより一般的な方法を見つけようとしています。
onexception
でイベントのようなものを検索しようとしましたObjectContext
が、近くに何も見つかりませんでした。この問題について見つけたのは、例外SaveChanges
と同時実行例外に関するもので、これについては説明しました。
どこに行くべきかについてのヒントはありますか?