0

データベースに保存されている大量のデータを操作するアプリケーションである WPF でデスクトップ アプリケーションを開発しています。アプリケーションは、ダイアグラムとグリッドを使用してそのデータを表示します。

Entity Framework を使用してデータにアクセスすることにしました (最初にコードを記述します)。使いやすく、遅延読み込みは私が探していたものです。NET を検索したところ、Entity Framework は「作業単位」戦略で使用するように設計されているように思われることがわかりました。

クライアントからの 2 つの簡単な期待を見てみましょう。

  1. 自分のデータを印刷して、印刷の進行状況を知らせてもらいたいです。
  2. PDF レポートを生成し、生成の進行状況を通知したいと考えています。

クライアントはグリッドを見ているので、Excel に近いものを期待しています。

  1. 印刷とレポートの生成では、データに加えられたすべての変更を考慮する必要があります。
  2. 変更は、ユーザーが保存するまで有効ではありません。

たとえば、Excel を開き、ワークシートを変更して印刷し、変更を破棄してアプリケーションを閉じます。

  1. 保存されていないデータを含め、すべてのワークシートが印刷されました
  2. ファイルを再度開くと、保存されていないデータはもうありません。

データを操作して変更を蓄積するために UI スレッドで DBContext を開き、時間がかかるため別のスレッド (新しい DBContext) でエクスポートを実行すると仮定すると、データへの変更は考慮されません。データを保存する場合。

それで、私は何をすべきですか...

  • データベースからディスク上の XML ファイルにデータをロードし、これらのファイルで作業し、保存時にデータをデータベースに戻しますか?
  • 想像力を働かせて DBContext を独自のスレッドに配置し、ロードと遅延ロードを DBContext スレッドにリダイレクトしますか?
  • 常にDBにデータを保存しますが、「未保存」フラグなどの場合は?

どんな提案も歓迎します。

4

1 に答える 1

2

UI スレッドをブロックしないように、非同期で読み込まれる監視可能なコレクションを ViewModel に公開させます。次に、探している保存機能を提供するコマンドを公開します。このようにして、変更されたオブジェクト (ObservableCollection) にアクセスして印刷し、ユーザーが [保存] コマンドを押さない場合はそれらを破棄できます。

于 2012-06-13T13:37:33.480 に答える