0

遅延読み込み時に nhibernate が新しい ISession を作成するのを防ぐことはできますか? どのように?

訂正: 新しい IDbConnections のことです。独自の DriverConnectionProvider を実装しましたが、遅延読み込みのために呼び出されることがわかりました

4

2 に答える 2

3

NHibernate は、自発的に作成することはありませんISession。これが起こると感じる例をいくつか投稿してください。怠惰なコレクション/関連付けを満たすためにNHがデータベースに接続する必要があるという理由だけで、基礎となる接続は実際には怠惰なフェッチ中に開かれます。

于 2011-03-12T11:06:26.930 に答える
0

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 の推奨される使用方法ではないことに注意してください。

于 2011-03-14T16:57:30.870 に答える