遅延読み込み時に nhibernate が新しい ISession を作成するのを防ぐことはできますか? どのように?
訂正: 新しい IDbConnections のことです。独自の DriverConnectionProvider を実装しましたが、遅延読み込みのために呼び出されることがわかりました
遅延読み込み時に nhibernate が新しい ISession を作成するのを防ぐことはできますか? どのように?
訂正: 新しい IDbConnections のことです。独自の DriverConnectionProvider を実装しましたが、遅延読み込みのために呼び出されることがわかりました
NHibernate は、自発的に作成することはありませんISession
。これが起こると感じる例をいくつか投稿してください。怠惰なコレクション/関連付けを満たすためにNHがデータベースに接続する必要があるという理由だけで、基礎となる接続は実際には怠惰なフェッチ中に開かれます。
NHibernate を接続マネージャーおよび SQL ジェネレーターとして使用している場合。つまり、次のようなコードがたくさんあります。
public IList<Entity> GetEntities()
{
using (ISession session = CreateNewSession())
{
return session.List<Entity>();
}
}
その後、遅延読み込みを使用できません。そのため、遅延読み込みを無効にする必要があります。default-lazy="false"
これは、hibernate-mapping タグに
http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-mappingを指定することで最も簡単に実現できます。
デフォルトの ISession の代わりに IStatelessSession を使用することもお勧めします。これは NHibernate の推奨される使用方法ではないことに注意してください。