我有一些用于打开自己的Sqlconnection的遗留代码。我现在想使用SqlConnection Nhibernate创建。
但我宁愿避免更改代码(DI,添加大量设置,......),那么,是否有一种简单(快速)方式来获取当前的Nhibernate会话?
答案 0 :(得分:2)
没有。无论如何,当前的NHibernate会话是什么?
在Web应用程序中,每个http请求必须与其特定的NHibernate会话一起使用。
在桌面应用程序中,每个屏幕可能会为每个操作使用一个会话。
NHibernate会话不应该用作单例。
您应该使用会话工厂在旧代码中打开新的NHibernate会话,然后使用其CreateSQLQuery
方法。您的会话工厂通常应该具有单例生存期。
如果将NHibernate会话绑定到对应用程序有意义的某些上下文(例如HttpContext,CallContext),则可以从那里获取它。注意可能导致上下文丢失的情况(async / await配置为不恢复上下文,asp.net线程敏捷性(不会导致HttpContext
丢失但CallContext
丢失),...)。