Хотя в NH все еще не поддерживается асинхронные запросы, вы все же можете частично преодолеть некоторые нежелательные эффекты запуска (длительных) вызовов БД из потока запросов.
То, что вы хотите, это разделить Threadpool между короткими и долгосрочными операциями. Конечно, это невозможно с реальной реализацией Threadpool и TPL, но вы можете легко помочь себе, написав собственную очередь Producer / Consumer с ожидаемыми элементами и настраиваемой конкуренцией.
Пожалуйста, посмотрите на пример, который я собрал: https://gist.github.com/3746240
Код скопирован / вставлен из замечательной книги Джозефа Албахари и Бена Албахари "C # 5.0 в двух словах: исчерпывающий справочник", в которую я внес изменение, в результате которого планировщик создал выделенные рабочие потоки для обработки элементов.