【发布时间】:2012-10-26 13:23:56
【问题描述】:
我正在使用单个会话,我的应用程序包含不同的模块,并且从会话中获取的对象被保留。当我从任何模块调用 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();
【问题讨论】:
-
我们能看到会话创建代码吗?
-
为什么你认为
Session.Clear()会刷新会话或实体?它实际上会清除 Session 中的所有对象,并会中断所有延迟加载。 -
如果我在创建 Session 时做错了什么,请告诉我。
标签: nhibernate c#-4.0