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