延迟加载时,我可以阻止nhibernate创建新的ISession吗?怎么样?
更正:我的意思是新的IDbConnections。我已经实现了自己的DriverConnectionProvider,我发现由于延迟加载而被调用
答案 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的推荐用法。