ビジネス ルール エンジンでのデータ アクセス
ルール エンジンは、.NET オブジェクトだけをネイティブにサポートしています。 データベースのデータを扱う場合、直接 ADO.NET オブジェクトを使用できます。ただし、このエンジンにはヘルパー クラスが提供されているので、データベースのデータをルールから簡単に使用できます。 ルール エンジンは、 TypedDataRow、 TypedDataTable、 DataConnection の 3 つのデータベース関連の型を公開することで、サポートを拡張します。 このセクションでは、これらのヘルパー クラス、それぞれの型を使用するタイミングに関する推奨事項、およびそれぞれの型を使用する際のパフォーマンスへの影響について説明します。
用意されているヘルパー クラスは次のとおりです。
TypedDataRow ADO.NET DataRow インスタンスへの参照を使用して構築されます。 TypedDataRow は、特定のテーブルの 1 つまたは少数の行からのデータのみを処理するルールに対して明確な選択肢です。
TypedDataTable 文字通り TypedDataRow オブジェクトのコレクションです。 データベース テーブルの各行は TypedDataRow としてラップされ、ルール エンジンによって動作メモリにアサートされます。
TypedDataTable には、DataTable ADO.NET メモリ内が必要です。これは、この特定の DataTable に非常に多くの行が含まれている場合、パフォーマンスのオーバーヘッドになる可能性があります。 データベース テーブル内の少数の行が関連しており、ルールを呼び出す前にこれらの行を特定できる場合は、 DataTable を使用し、それ以外の場合は TypedDataRow を使用します。DataTable 内の行の数が多い場合は、ルールに関連していると仮定します。
DataConnection : データベース接続を通じてアクセスするデータベースのテーブルを表します。 DataConnection と TypedDataTable の違いは、データセット名とテーブル名に加えて、DataConnection には使用可能なデータベース接続と必要に応じてデータベース トランザクション コンテキストが必要であるという点です。
DataConnection でルールで使用される述語の一部またはすべてが、データベース接続に対するクエリ制約の一部になります。 クエリの制約を満たす行だけがデータベースから取得され、エンジンで使用されます。 このメカニズムにより、パフォーマンスが向上し、メモリ内に非常に大きな DataTable を 保持するよりも消費されるメモリが少なくなります。