Я работаю над проектом, в котором мы свободно используем nhibernate и выполняем запросы в нашем хранилище для сущностей. Часто мы пишем такие запросы:
(from person in repository.Query<Person>()
where person.Age > 18
where person.Age < 50
select person).Single();
Очевидно, у нас есть некоторая логика, и мы хотели бы иметь возможность инкапсулировать ее где-то более разумным. Идеальным решением было бы сделать это:
(from person in repository.Query<Person>()
where personIsTheRightAge(person)
select person).Single();
bool personIsTheRightAge(Person person)
{
return person.Age > 18 && person.Age < 50;
}
Но nhibernate не знает, как с этим справиться.
Мы могли бы предоставить методы расширения для IQueryable , но это не сработает, если я запрашиваю сущность Car с драйвером Person, и мне нужно повторно использовать ту же логику.
Мне просто интересно, есть ли у кого-нибудь хорошие идеи о том, как решить эту проблему так, чтобы ее можно было многократно использовать в проекте.
Заранее спасибо за любую помощь.