懒得初始化 - 没有会话或会话被关闭

时间:2012-10-26 13:23:56

标签: nhibernate c#-4.0

我正在使用单个会话,我的应用程序包含不同的模块,并保留从会话中提取的对象。当我从任何模块调用Session.Clear来刷新会话或实体时。我在任何其他模块中获取子实体时遇到异常“懒得初始化 - 没有会话或会话关闭”

[LazyInitializationException]无法懒惰地初始化角色集合:Application.Modules.Repository.childRepository,没有关闭会话或会话

这是我如何创建会话工厂和会话:

var createdSessionFactory = Fluently.Configure(configuration)
                                          .Mappings(m => m.FluentMappings.AddFromAssemblyOf<DMProgram>())
                                          .ExposeConfiguration(c => c.SetProperty("command_timeout", "500"))
                                          .BuildSessionFactory();


ISession Session = NHibernateConfiguration.SessionFactory.OpenSession();

1 个答案:

答案 0 :(得分:3)

案例:当我们从会话中获取对象(A)时。该对象有一些延迟加载的集合(B)。你关闭或清除会话。现在你想要收集(B)。确定你得到这个错误。

原因:因为会话不知道父对象(A)。

解决方案:您需要保持会话,或者您可以急切地收集负载(B)。