Wie kann ich diese NHibernate-Abfrage in einer n-Tier-Architektur lösen?

Ich habe versucht, NHibernate von meiner Service-Schicht zu entkoppeln. Meine Architektur sieht so aus:

web -> services -> repositories -> nhibernate -> db

Ich möchte in der Lage sein, beliebige Abfragen aus meiner Service-Ebene und möglicherweise aus meiner Web-Ebene zu erstellen, ohne dass diese Ebenen wissen, um was es sich handelt. Derzeit habe ich eine Suchmethode für alle meine Repositorys, die berücksichtigtIList<object[]> criteria. Dadurch kann ich eine Liste von Kriterien wie übergebennew object() {"Username", usernameVariable}; von überall in meiner Architektur. NHibernate übernimmt dies, erstellt ein neues Criteria-Objekt und fügt die übergebenen Kriterien hinzu. Dies funktioniert problemlos für einfache Suchvorgänge in meiner Serviceebene, ich möchte jedoch die Möglichkeit haben, ein Abfrageobjekt zu übergeben, das von meinem Repository in ein NHibernate-Kriterium übersetzt wird.

Eigentlich würde ich gerne so etwas wie das implementieren, was in dieser Frage beschrieben wird:Gibt es einen Wert für das Abstrahieren eines anderen Kriteriums?. Ich finde einfach keine guten Ressourcen, um so etwas zu implementieren. Ist die in dieser Frage beschriebene Methode ein guter Ansatz? Wenn ja, kann jemand Hinweise zur Implementierung einer solchen Lösung geben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage