0

NHibernateを使用してデータベースに接続するデスクトップアプリケーションを作成しています。

私のモデルには、モデルが初期化されるときに開かれ、モデルが破棄されるときに閉じられるセッションがあります。開いているセッションの数は開いているウィンドウの数と同じであるため、フォームごとに1つのモデルがある場合、これは問題ありません。

現在、多くのモデルをリストしたフォームを作成しているので、フォームに50のモデルがリストされている場合、50のオープンセッションがあります。これが問題になるのではないかと思います。

NHibernateでオープンセッションをいくつ開催できますか?少数にする必要がありますか、それとも必要な数のオープンセッションを持つことができますか?

4

1 に答える 1

2

それはあなたがあなたのセッションを開いたままにしておく時間とあなたがそれらで何をするかによります。セッション自体は非常に軽量であり、必ずしもデータベースへの接続を開くとは限りません。

ただし、1つのフォームに対して50のオープンセッションを持つことは、最良の設計ではないと思います。セッションを「作業の単位」として使用することをお勧めします。何かをしたいとき(データの提示、データの更新、エンティティのリストの一覧表示など)は、セッションを開いて作業を行い、その後、セッションを破棄します。これにより、遅延読み込みとデータバインディングで問題が発生する可能性がありますが、必要な関連付けを取得することで問題を回避できます。

session.Lock(entity、LockMode.None)を使用して、あるセッションでロードしたエンティティを別のセッションに再接続できるため、ユーザーとの対話の間にセッションを開く必要はありません。

于 2012-05-23T13:11:11.683 に答える