nhibernate - 延迟初始化失败 - 没有 session 或 session 已关闭

标签 nhibernate c#-4.0

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

[LazyInitializationException] 未能延迟初始化角色集合:Application.Modules.Repository.childRepository,没有 session 或 session 已关闭

这就是我创建 session 工厂和 session 的方式:

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 中获取对象(A)时。该对象有一些延迟加载的集合(B)。您关闭或清除 session 。现在你正在尝试获取集合(B)。确保您收到此错误。

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

解决方案:您需要保留 session ,或者可以预先加载集合(B)。

关于nhibernate - 延迟初始化失败 - 没有 session 或 session 已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13087822/

相关文章:

nhibernate - 在 NHibernate 中的映射级别过滤实体

c# - 如何使用 LINQ 更新列表中的值

c# - 在字典内部的字典中添加键值对

c#-4.0 - 如何模拟 MongoDB 对象来测试我的数据模型?

.net - oracle中复杂的select语句

c# - 人是聚合根吗?

c# - 将未映射的类与 NHibernate 命名查询一起使用

nhibernate - 奇怪的 linq 到 nhibernate 问题,来自 'System.Int32' 的无效转换

asp.net-mvc - StructureMap/NHibernate Session Per Request 包括常量事务

c# - 如何将方法作为参数传递?