Вы можете использовать класс MultiDictionary из PowerCollections .
Он возвращает ICollection {TValue} для запрошенного ключа.
Это действительно зависит от Вашей среды. Например, мы используем Open-Session-In-View (ссылка Java, но шаблон является тем же в .NET), шаблон на сайте ASP.NET, и используйте HttpModule для управления сессиями и транзакциями. HttpModule открывает сессию и запускает транзакцию в событии BeginRequest и затем фиксирует транзакцию и закрыл сеанс в событии EndRequest.
Различные среды и коммуникационные шаблоны приведут к различным стратегиям сессии/управления транзакциями.
существует большое обсуждение различных стратегий в Группа пользователей NHibernate , а также в сети в целом.
Судя по Айенде, вам, вероятно, нужно явно добавить транзакцию для всех, даже для поиска. Проверьте здесь: http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions