有没有办法从任何地方访问当前的Nhibernate会话?

有没有办法从任何地方访问当前的Nhibernate会话?,nhibernate,Nhibernate,我有一些用于打开自己的Sqlconnection的遗留代码。现在我想使用Nhibernate创建的SqlConnection 但是我宁愿避免大量更改代码(DI,添加设置负载,…),那么,有没有一种简单(方便)的方法来获取当前的Nhibernate会话?没有。当前的Nhibernate会话到底是什么 在web应用程序中,每个http请求都必须使用其特定的NHibernate会话 在桌面应用程序中,每个屏幕可能会对其每个操作使用一个会话 NHibernate会话不应作为单例使用 您可能应该使用会话工

我有一些用于打开自己的Sqlconnection的遗留代码。现在我想使用Nhibernate创建的SqlConnection


但是我宁愿避免大量更改代码(DI,添加设置负载,…),那么,有没有一种简单(方便)的方法来获取当前的Nhibernate会话?

没有。当前的Nhibernate会话到底是什么

在web应用程序中,每个http请求都必须使用其特定的NHibernate会话

在桌面应用程序中,每个屏幕可能会对其每个操作使用一个会话

NHibernate会话不应作为单例使用

您可能应该使用会话工厂在遗留代码中打开新的NHibernate会话,然后使用其
CreateSQLQuery
方法。您的会话工厂通常应该有一个单实例生存期


如果将NHibernate会话绑定到对应用程序有意义的上下文(如HttpContext、CallContext),则可以从那里获得它。小心可能导致上下文丢失的情况(异步/等待配置为不恢复上下文,asp.net线程敏捷性(不会导致
HttpContext
丢失,但
CallContext
丢失),…)。

否。当前的NHibernate会话是什么

在web应用程序中,每个http请求都必须使用其特定的NHibernate会话

在桌面应用程序中,每个屏幕可能会对其每个操作使用一个会话

NHibernate会话不应作为单例使用

您可能应该使用会话工厂在遗留代码中打开新的NHibernate会话,然后使用其
CreateSQLQuery
方法。您的会话工厂通常应该有一个单实例生存期

如果将NHibernate会话绑定到对应用程序有意义的上下文(如HttpContext、CallContext),则可以从那里获得它。小心可能导致上下文丢失的情况(异步/等待配置为不恢复上下文,asp.net线程敏捷性(不会导致
HttpContext
丢失,但
CallContext
丢失),…)