我想知道管理NHibernate Session Context的最佳方法是什么 从Xsockets控制器使用NH数据层时。 特别是我指的是自托管的winservice / console应用程序或Azure worker角色, HTTPContext不可用的地方。 当然,每个调用总是有一个创建和处理会话的选项,但这意味着性能受到影响,因此以某种方式更好地重用会话。 我的控制器为底层NH存储库中的CRUD操作提供API,并在DB中更新某些记录时向相关订户推送更新。
您的想法受到赞赏:)
答案 0 :(得分:0)
如果在OnOpen事件中打开连接,XSockets的状态将对您的数据库不利,因为只要套接字打开,连接将保持打开状态。最好是仅在调用CRUD操作的方法中使用存储库。
在这种情况下,获取存储库的实例不应该成为瓶颈。
我很乐意审核您可能拥有的任何代码。
此致 Uffe
答案 1 :(得分:0)
我正在使用StructureMap来处理依赖项并创建一个NestedContainer来处理每个请求的会话。不必为了存储会话而混淆CurrentSessionContext或HttpContext。
http://structuremap.github.io/the-container/nested-containers/
如果您正在使用带有WebAPI的OWIN,您甚至可以创建一个中间件UnitOfWork。