【发布时间】:2020-01-14 04:52:47
【问题描述】:
我们有一个旧软件并使用 NHibernate 版本 2 和 Oracle DB。我更改了一些部分,以便该软件现在具有多线程。更改后,我遇到了多线程和会话对象的问题(因为会话对象不是线程安全的)。
所以我更改了创建会话的 SessionMananger 类。从数据库中检索数据总是会创建一个新会话session = SessionFactory.OpenSesion()。
存储数据时,会话对象将被存储并重用,直到提交或回滚。提交后会话对象将被关闭。
解决方案有效,但有时我们会遇到不同的错误,例如 ORA-03135 或无法执行选择查询。
是否可以打开会话并且不要显式关闭此会话。还是会话会自动关闭?
是否可以将会话对象存储在以线程 ID 作为键的线程安全字典中?
【问题讨论】:
标签: c# multithreading session nhibernate sessionfactory