Für die Ausführung von Formeln in .NET sollte immer die Kompilation verwendet werden. Die Verwendung von Fit und Evaluate wird nicht unterstützt, weil dort einige Funktionen nicht korrekt arbeiten.

Kompilierung einer Formel für die Ausführung in .Net:

Func<OrmBABase, bool> filter = CriteriaOperatorHelper.CompileExpression<OrmBABase, bool>(dataSourceGuid, criteriaString);

Dies interpretiert den Criteria-String als .NET Criteria und compiliert und validiert alle Ausdrücke so, dass sie für Objekte vom Typ dataSourceGuid immer funktionieren und den korrekten Rückgabetyp, hier bool liefern.

Das Ergebnis der Compilation sollte immer gecacht werden, da selbige etwa 1000-fach langsamer ist, als die Ausführung.

Beschreibung

public static Func<ST, SR> CompileExpression<ST, SR>(Guid ormType, CriteriaOperator criteria, Action<LambdaExpression> check = null)

Methode zur Kompilierung gegen eine Datentabelle mit einem gewünschten Rückgabetyp

  • ST Statischer Datensatztyp mit dem die Funktion aufgerufen wird, z.B. OrmBase.
  • SR Statischer Rückgabetyp der Funktion, z.B. bool bei Bedingungen oder object, wenn die Funktion beliebige Datentypen liefern darf.
  • ormType Datentabelle, auf deren Basis kompiliert wird. Das ist üblicherweise ein speziellerer Typ als ST der sich erst aus dem Konfigurationskontext zur Laufzeit ergibt.
  • criteria Die Formel
  • converter Optionaler Visitor der sich den LINQ-Ausführungsbaum nochmal ansehen kann, z.B. um den tatsächlichen Rückgabetyp der Formel zu prüfen.
  • Rückgabe: Eine Exception oder eine ausführbare .Net Funktion.