1

dbから受け取ったエンティティの操作について質問があります。現在、dbからエンティティを取得し、それらを別のサービスに渡す必要がある多くの操作があります。このようなコードの簡略化されたバージョンは次のとおりです。

List<Entity> list;
using(var session = SessionFactory.OpenSession())
{
    list = Session.QueryOver<Entity>.Future().ToList();
}

したがって、オブジェクトのリストが長期間破棄されない場合、保存されたセッションに応じてメモリが不足するかどうかはわかりません。セッション中に受信されたオブジェクトが存在する間、nhibernateセッションは存在しますか?

更新

セッション設定Session.ActiveEntityMode-POCOが見つかりました、それは私の問題を解決しますか?

4

1 に答える 1

2

セッションは、使用が終了するとすぐに破棄されます。ロードされたすべてのエンティティは、レイジーロードされたコレクション/参照/プロパティが初期化されていない場合を除いて、引き続き有効です。

また、Session.QueryOver<Entity>.Future().ToList();Future / futurevalueを持つ他の操作がない場合、Futureinはnoopです。

于 2012-05-29T11:28:37.960 に答える