2


0

私はプロジェクトで.NETの型指定されたデータセットを使用しています。そして、いくつかのテーブルからデータセットにデータをプリフェッチしてから、そのデータセットを処理のためにいくつかのメソッドに渡すという状況に陥ります。 各メソッドに必要なデータを正確に決定させてからデータ自体をロードするようにした方がわかりやすいようです。 ただし、いくつかの方法で同じデータを使用するため、最初にデータをロードすることによるパフォーマンス上の利点は1回だけです。

私の問題は、依存関係を管理するための適切な方法やパターンがわからないことです(データセットを使用する各クラス/メソッドに必要なすべてのデータを確実にロードしたいです)。 現在のところ、データセットを使用するさまざまなクラスのコードを調べて、すべてが適切に読み込まれていることを確認します。

この状況で使用するのに適したアプローチやパターンは何ですか? 私は根本的に悪いことをしていますか? 私は型付きデータセットを使用していますが、これはプリフェッチデータが使用される一般的な状況のように思われます。

ありがとうございます。

2 Answer


1


私が探している「パターン」は、おそらく単に遅延ロード、または遅延ロードだと思います。 型指定されたデータセットは、すべてのメソッドまたはクラスが必要とする構造をすべて持つことができますが、メソッド/クラスがデータの特定の部分にアクセスしようとするまでデータは埋められません。

良い例は名前と住所です。 名前のリストがあり、それらの名前のそれぞれに複数のアドレスがある場合があります。 アドレスにアクセスする必要がないメソッド/クラスは、アドレスをロードさせません。 しかし、任意のメソッドまたはクラスが特定の名前のアドレスにアクセスしようとするとすぐに、その名前のアドレスがロードされます。 その名前のアドレスを後で使用すると、すでにロードされているデータが見つかります。

型付きデータセットでこれを実装することはかなり手動のプロセスになるでしょう。 (そして、型指定されたデータセットを扱うたびに、それらを憎むことになります。)この機能が組み込まれているので、LINQ to SQLを見たいと思うかもしれません。 これが組み込まれている他の同様のフレームワークがあります。


1


各クラスにデータ要件を追加してからデータをプリフェッチしてからデータを処理するという、コンポジットパターンに似たものを使用できます。

UsedClassesの各クラス

DataSet.AddRequirement(Class.Requirements)

DataSet.Prefetch

UsedClassesの各クラス

Class.Process(DataSet)