3

SaveChanges(Winアプリ)の(Winアプリ)に変更を非同期で保存してもらいたいのですObjectContextが、ユーザーが作業を続けている間、ユーザーにマーキー(または制御可能?)のプログレスバー(これは簡単に実装できます)を表示します。

SaveChanges基本的にのをオーバーライドしたいObjectContext

誰かがこれについて以前に考えたことがありますか?

4

2 に答える 2

3

Entity Framework 自体は現在、非同期操作をサポートしていません。主な理由は、これもサポートされていない ADO.NET の上に構築されているためです。ADO.NET は、既定ではスレッド セーフでさえありません。

上記のデリゲート アプローチを使用するか、Task にラップすることができます。ただし、プロバイダーがサポートしている場合でも、非同期呼び出しは使用されません。また、この「バックグラウンド」操作中は、ObjectContext で何もしないでください (クエリ、オブジェクトの追加など)。状態が破損する可能性があります。

マルチスレッドに関連して、この投稿を読むことができます。古いですが、アイデアはまだ有効です。

2013-04-17 を編集:

EF6 (次のバージョン、執筆時点では現在アルファ段階) は、非同期操作、つまり要求されSaveChangesAsyncた . また、ADO.NET モデルを拡張したため、プロバイダー自体が非同期実行をサポートしている場合は、実際には非同期になります (それ以外の場合は、より良い (賢明な) ことは何もないため、以前の動作に戻ります)。

于 2012-06-03T19:15:03.383 に答える