我正在构建一个带有 WCF Web 服务后端的 ASP.NET MVC 网站,该后端通过 NHibernate 与数据库通信。目前,作为 POC,我有一个名为 UserService 的 Web 服务,其中包含我需要的所有方法。我遇到的问题是我有一个包装 NHibernate 配置的 DataRepository 对象。当我创建一个新的数据存储库对象时,它会加载 NHibernate 配置和映射以及缓存等。对于我在用户会话中的网站,我希望在他们的会话期间保持这个 DataRepository 对象打开,因为保持它没有意义在每次调用的基础上重新配置 NHibernate,我希望相同的数据存储库可用于所有 Web 服务方法,以从 NHibernate 缓存中受益。
这里的答案是在 UserService.cs 类级别创建一个静态 DataRepository 对象并将网站配置为基于每个会话进行实例化,这是否意味着每个用户会话在其会话的生命周期内都包含其自己的静态数据存储库对象?或者,还有更好的方法?上述方法有什么我没有想到的吗?