Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nhibernate 未能延迟初始化-没有会话或会话已关闭_Nhibernate_C# 4.0 - Fatal编程技术网

Nhibernate 未能延迟初始化-没有会话或会话已关闭

Nhibernate 未能延迟初始化-没有会话或会话已关闭,nhibernate,c#-4.0,Nhibernate,C# 4.0,我使用的是单个会话,我的应用程序包含不同的模块,从会话中获取的对象被保留。当我调用会话时。清除任何模块以刷新会话或实体。在获取任何其他模块中的子实体时,我收到异常“未能延迟初始化-没有会话或会话已关闭” [LazyInitializationException]未能延迟初始化角色集合:Application.Modules.Repository.childRepository,未关闭任何会话或会话 以下是我创建会话工厂和会话的方法: var createdSessionFactory = Flu

我使用的是单个会话,我的应用程序包含不同的模块,从会话中获取的对象被保留。当我调用会话时。清除任何模块以刷新会话或实体。在获取任何其他模块中的子实体时,我收到异常“未能延迟初始化-没有会话或会话已关闭”

[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();
var createdSessionFactory=fluntly.Configure(配置)
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.ExposeConfiguration(c=>c.SetProperty(“命令超时”,“500”))
.BuildSessionFactory();
ISession Session=NHibernateConfiguration.SessionFactory.OpenSession();

案例:当我们从会话中获取对象(a)时。该对象有一些集合(B),它是延迟加载。您可以关闭或清除会话。现在您正在尝试获取集合(B)。确定您得到了这个错误

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


解决方案:您需要持久化会话,或者您可以立即加载收集(B)。

我们可以看到会话创建代码吗?为什么您认为
session.Clear()
会刷新会话或实体?它实际上会清除会话中的所有对象,并会中断所有延迟加载。如果我在创建会话时出错,请告诉我。