SaveChanges
(Winアプリ)の(Winアプリ)に変更を非同期で保存してもらいたいのですObjectContext
が、ユーザーが作業を続けている間、ユーザーにマーキー(または制御可能?)のプログレスバー(これは簡単に実装できます)を表示します。
SaveChanges
基本的にのをオーバーライドしたいObjectContext
。
誰かがこれについて以前に考えたことがありますか?
SaveChanges
(Winアプリ)の(Winアプリ)に変更を非同期で保存してもらいたいのですObjectContext
が、ユーザーが作業を続けている間、ユーザーにマーキー(または制御可能?)のプログレスバー(これは簡単に実装できます)を表示します。
SaveChanges
基本的にのをオーバーライドしたいObjectContext
。
誰かがこれについて以前に考えたことがありますか?
Entity Framework 自体は現在、非同期操作をサポートしていません。主な理由は、これもサポートされていない ADO.NET の上に構築されているためです。ADO.NET は、既定ではスレッド セーフでさえありません。
上記のデリゲート アプローチを使用するか、Task にラップすることができます。ただし、プロバイダーがサポートしている場合でも、非同期呼び出しは使用されません。また、この「バックグラウンド」操作中は、ObjectContext で何もしないでください (クエリ、オブジェクトの追加など)。状態が破損する可能性があります。
マルチスレッドに関連して、この投稿を読むことができます。古いですが、アイデアはまだ有効です。
2013-04-17 を編集:
EF6 (次のバージョン、執筆時点では現在アルファ段階) は、非同期操作、つまり要求されSaveChangesAsync
た . また、ADO.NET モデルを拡張したため、プロバイダー自体が非同期実行をサポートしている場合は、実際には非同期になります (それ以外の場合は、より良い (賢明な) ことは何もないため、以前の動作に戻ります)。