在多线程 Windows 服务应用程序中使用的最佳 NHibernate 会话管理方法是什么?
我有一个使用多线程的 Windows 服务应用程序。我在这个应用程序的数据访问层使用 NHibernate。
您对此应用程序中的会话管理有何建议?我读到了 UNHDaddins,这是一个好的解决方案吗?
I have a windows service application that work with multithread. I use NHibernate in data access layer of this application.
What is your suggestion for session management in this application. I read about UNHAddins, Is it a good solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我使用 NHibernate 内置的上下文会话。您可以在这里阅读它们:
http://nhibernate.info /doc/nhibernate-reference/architecture.html#architecture-current-session
这是我如何使用它的示例:
除此之外,我的休眠配置中有以下内容 文件:
I use NHibernate's built in contextual sessions. You can read about them here:
http://nhibernate.info/doc/nhibernate-reference/architecture.html#architecture-current-session
Here is an example of how I use this:
In addition to this I have the following in my hibernate config file:
我从来没有看过 unhaddins,但这是我用于 wcf 的东西,我想也应该适用于多线程一般的东西。
这是会话上下文:
这是上下文管理器:
编辑:
要清楚,正如其他答案所述,线程静态上下文将开箱即用。我这里的主要优点是1)你可以控制,2)它是一个惰性实现,所以如果没有必要,你不必为每个线程启动一个会话。恕我直言,与数据库的连接越少越好。
i've not ever looked at the unhaddins, but here's what i use for wcf stuff, should probably work for multithreaded general stuff too i imagine.
this is the session context:
this is the context manager :
Edit:
to be clear, as the other answer states, the thread static context will work out of the box. the main advantage of what i have here is 1) you get to be in control, and 2) its a lazy implementation, so you don't have to start a session for each thread if its not necessary. less connection to the db is always better, imho.