Como posso resolver esse NHibernate Querying em uma arquitetura de n camadas?

Eu bati em uma parede tentando dissociar o NHibernate da minha camada de serviços. Minha arquitetura é assim:

web -> serviços -> repositórios -> nhibernate -> db

Eu quero ser capaz de gerar nhibernate queries da minha camada de serviços e, possivelmente, minha camada web sem que essas camadas saibam com o que eles estão lidando. Atualmente, eu tenho um método de encontrar em todos os meus repositórios que leva emIList<object[]> criteria. Isso me permite passar em uma lista de critérios comonew object() {"Username", usernameVariable}; de qualquer lugar na minha arquitetura. O NHibernate leva isso para dentro e cria um novo objeto Criteria e adiciona os critérios passados. Isso funciona bem para pesquisas básicas da minha camada de serviço, mas eu gostaria de ter a capacidade de passar em um objeto de consulta que o meu repositório traduz em um Critério do NHibernate.

Realmente, eu adoraria implementar algo como o que é descrito nesta pergunta:Existe valor em abstrair o critério nhibernate. Eu simplesmente não estou encontrando bons recursos sobre como implementar algo assim. O método descrito nessa pergunta é uma boa abordagem? Em caso afirmativo, alguém poderia fornecer algumas indicações sobre como implementar essa solução?

questionAnswers(2)

yourAnswerToTheQuestion