nhibernate lazyload创建新的isession

时间:2011-03-12 11:03:28

标签: nhibernate lazy-loading isession

延迟加载时,我可以阻止nhibernate创建新的ISession吗?怎么样?

更正:我的意思是新的IDbConnections。我已经实现了自己的DriverConnectionProvider,我发现由于延迟加载而被调用

2 个答案:

答案 0 :(得分:3)

NHibernate不主动创建任何ISession。请发布一些你认为会发生这种情况的例子。实际上,在懒惰提取期间打开了底层连接,因为NH需要连接到数据库才能填充延迟的集合/关联。

答案 1 :(得分:0)

如果您使用NHibernate作为连接管理器和SQL生成器。即你有很多代码如下:

public IList<Entity> GetEntities()
{
    using (ISession session = CreateNewSession())
    {
        return session.List<Entity>();
    }
}

然后你不能使用延迟加载。所以你需要禁用延迟加载。通过在hibernate-mapping标记上指定default-lazy="false",可以最轻松地实现这一点 http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-mapping

我可能会建议使用IStatelessSession而不是默认的ISession。请记住,这不是NHibernate的推荐用法。