Я заметил, что вы упомянули из вашего другого вопроса / ответа:
SqlConnection class is not thread-safe, and that includes closing the connection
on a separate thread. Based on this response we have filed a
bug report for NHibernate.
Однако из документации NHibernate :
11.2. Threads and connections
При создании сеансов NHibernate необходимо соблюдать следующие правила:
Никогда не создавайте более одного одновременного экземпляра ISession или ITransaction для соединения с базой данных.
Будьте предельно осторожны при создании более одного сеанса IS для каждой базы данных за транзакцию. Сам ISession отслеживает обновления, сделанные для загруженных объектов, поэтому другой ISession может видеть устаревшие данные.
ISession не является потокобезопасным! Никогда не обращайтесь к одной и той же сессии в двух параллельных потоках. ISession - это обычно только одна единица работы!
Если вы пытаетесь создать многопоточное соединение с NHibernate, возможно, оно просто не будет работать. Рассматривали ли вы другой ORM, например Entity Framework ?
Независимо от того, какой ORM вы выберете, соединение с базой данных не будет поточно-ориентированным. Это универсально.
"многие драйверы БД не являются поточно-ориентированными. Использование одноэлементного означает, что если у вас много потоков, все они будут использовать одно и то же соединение. Шаблон синглтона не обеспечивает вам безопасность потоков. Он просто позволяет многим потокам легко совместно использовать «глобальный» экземпляр. - https://stackoverflow.com/a/6507820/1026459