6

C# WinForms アプリケーションの NHibernate セッション管理についてアドバイスが必要です。

現在、NHibernate を使用するアプリケーションを移植しています。以下のリンクで説明されているように、UnitOfWork パターンも採用しています。

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

私の質問はセッションに関するものです。

  1. スレッドごとに常に 1 つのセッションのみを実行できますか?

  2. アプリケーションによって表示されるフォームに対してセッション (UnitOfWork) が開いている可能性がありますが、ユーザーは別のフォーム (つまり、ツール - オプション) を開いて、それを独自の UnitOfWork にしたいというシナリオがあります。この場合、"Tools - Options" フォーム用に別のセッションを開き、現在開いているセッションを基になるフォーム用に使用しない方が明らかに理にかなっています。

  3. 1 つのスレッドでセッションのディクショナリを使用できますか?

セッション管理に関するアドバイスをいただければ幸いです。

4

2 に答える 2

4

ジェイが言ったことに+1。また、Hibernate を使用したデスクトップ To-Do アプリケーションの構築に関する Oren Eini の記事を読むことをお勧めします。

http://msdn.microsoft.com/en-us/magazine/ee819139.aspx

UI テクノロジとして WPF を使用しますが、彼の言うことはすべて (デスクトップ アプリの NHibernate に関して) WinForms にも同様に関連しています。

于 2010-12-29T01:59:06.680 に答える
3

1 - ユースケースに必要な数のセッションを持つことができます。

2 - 1 に基づいて、それで問題ありません。

3 - セッション変数をディクショナリまたはその他のコレクションに入れることができます。

自分が何をしているのか、そしてその理由を本当に理解していない限り、すべきでないことは次のとおりです。

  • 複数のスレッドで同じセッションを使用する
  • あるセッション/UoW から別のセッションにエンティティを渡す
  • 例外をスローしたセッションの再利用を試みる (自分が何をしているのかわかっていると思っていても、これを行わないでください)
于 2010-12-29T01:50:23.007 に答える