我想创建一个在显示之前预加载所有必需实体的要求,以最大限度地减少因疏忽造成的数据库调用量。是否有可能在返回之前强制NHibernate测试集合?
我想到了在返回对象之前检查NHibernateUtil.IsInitialized()
之类的东西,不知道如何全局实现它,而不是为每个属性手动执行它。
注意:我不想为整个应用程序启用急切加载,只需引入稍微更聪明的延迟加载。
答案 0 :(得分:0)
消费者应该指定应该急切加载哪些路径,并且DAL应该使用SetFetchMode / Fetch来加载路径。然后获取所有数据。
评论答案:加载数据后
session.Close()
抛弃了会话session.Clear()
分离所有实例session.Evict(obj)
分离obj和相关实体e.g。
foreach (var item in queryresults)
{
session.Evict(item);
}
所有单元化代理和集合现在将抛出LazyLoadExceptions