Datenzugriff in der Geschäftsregel-Engine
Die Regel-Engine unterstützt nur .NET-Objekte nativ. Um mit Daten aus einer Datenbank zu arbeiten, können Sie die ADO.NET-Objekte direkt verwenden. Die Engine bietet jedoch einige Hilfsklassen, um die Verwendung von Datenbankdaten aus Regeln zu vereinfachen. Die Regel-Engine erweitert ihre Unterstützung, indem drei datenbankbezogene Typen verfügbar sind: TypedDataRow, TypedDataTable und DataConnection. In diesem Abschnitt finden Sie eine Beschreibung der Hilfsklassen und Empfehlungen zur Verwendung der einzelnen Typen. Außerdem wird erläutert, wie sich die Verwendung der Typen auf die Leistung auswirkt.
Folgende Hilfsklassen stehen zur Verfügung:
TypedDataRow. Erstellt mithilfe eines Verweises auf ein ADO.NET DataRow-instance. TypedDataRow ist eine offensichtliche Wahl für Regeln, die nur Daten aus einer oder einer kleinen Anzahl von Zeilen aus einer bestimmten Tabelle behandeln.
TypedDataTable. Buchstäblich eine Auflistung von TypedDataRow-Objekten . Jede Zeile in der Datenbanktabelle wird als TypedDataRow umschlossen und von der Regel-Engine in den Arbeitsspeicher eingefügt.
Eine TypedDataTable erfordert eine In-Memory-ADO.NET DataTable. Dies kann ein Leistungsmehraufwand sein, wenn diese dataTable eine sehr große Anzahl von Zeilen enthält. Wenn eine kleine Anzahl von Zeilen in der Datenbanktabelle relevant ist und Sie diese Zeilen vor dem Aufrufen der Regeln ermitteln können, verwenden Sie eine DataTable, andernfalls TypedDataRow. Es wird davon ausgegangen, dass eine hohe Anzahl von Zeilen in der DataTable für die Regeln relevant ist.
DataConnection. Stellt eine Tabelle in einer Datenbank dar, auf die über eine Datenbankverbindung zugegriffen wird. Der Unterschied zwischen DataConnection und TypedDataTable besteht darin, dass DataConnection zusätzlich zum Dataset- und Tabellennamen eine verwendbare Datenbankverbindung und optional einen Datenbanktransaktionskontext erfordert.
Einige oder alle Prädikate, die in Regeln mit dataConnection verwendet werden, werden Teil der Abfrageeinschränkungen für die Datenbankverbindung. Es werden nur solche Zeilen aus der Datenbank abgerufen und von der Engine verwendet, die den Abfragebeschränkungen entsprechen. Dieser Mechanismus bietet eine bessere Leistung und verbraucht weniger Arbeitsspeicher als das Speichern einer sehr großen DataTable im Arbeitsspeicher.