我注意到您在其他问题/答案中提到:
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 实例。
在为每个数据库的每个事务创建多个 ISession 时要格外小心。ISession 本身会跟踪对加载对象所做的更新,因此不同的 ISession 可能会看到陈旧的数据。
ISession 不是线程安全的!永远不要在两个并发线程中访问同一个 ISession。ISession 通常只是一个单一的工作单元!
如果您尝试使用 NHibernate 进行多线程连接,那么它可能无法正常工作。您是否考虑过不同的 ORM,例如Entity Framework?
不管你选择什么 ORM,数据库连接都不是线程安全的。这是普遍的。
“许多数据库驱动程序不是线程安全的。使用单例意味着如果你有很多线程,它们都将共享相同的连接。单例模式不会给你线程安全。它只是允许多个线程轻松共享一个“全局”实例。” - https://stackoverflow.com/a/6507820/1026459