延迟加载时可以防止 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"
在您的休眠映射标签
http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-mapping上指定来最容易地实现
我可能会推荐使用 IStatelessSession 而不是默认的 ISession。请记住,这不是 NHibernate 的推荐用法。