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"在您的休眠映射标签 http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-mapping上指定来最容易地实现

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

于 2011-03-14T16:57:30.870 回答