NHibernate会话管理建议

Hug*_*sta 6 c# nhibernate session unitofworkapplication winforms

我需要一些关于C#WinForms应用程序的NHibernate会话管理的建议.

我目前正在移植一个使用NHibernate的应用程序.我也正在使用UnitOfWork模式,如下面的链接所述;

http://nhforge.org/wikis/patternsandpractices/nhibernate-and-the-unit-of-work-pattern.aspx

我的问题与Sessions有关.

  1. 你是否只能在每个线程上运行一个会话?

  2. 我有一个场景,其中一个Session(UnitOfWork)可以为应用程序显示的表单打开,但是用户打开另一个表单(即工具 - 选项),我想拥有自己的UnitOfWork.显然,在这种情况下,为"工具 - 选项"表单打开另一个会话更有意义,而不是使用当前打开的会话作为基础表单.

  3. 我们可以在一个帖子上有一个会话词典吗?

有关会话管理的任何建议表示赞赏.

Jay*_*Jay 3

1 - 您可以根据您的用例需要拥有任意数量的会话。

2 - 很好,基于 1。

3 - 您可以将会话变量放入字典或任何其他集合中。

除非你真的知道自己在做什么以及为什么,否则你不应该做的是:

  • 在多个线程中使用同一个会话
  • 将实体从一个会话/UoW 传递到另一个会话/UoW
  • 尝试重用引发异常的会话(即使您认为自己知道自己在做什么,也不要这样做)