Fluent nhibernate Nhibernate-未能轻松初始化集合。。。没有会话或会话已关闭
我发现了这个错误,我想知道是否有人知道如何调试它 谢谢 正在初始化[GL.Objects.Profile`1[[GL.Objects.Education.Education, 总账对象,版本=0.1.1.0, 文化=中立, PublicKeyToken=ebf25c7be4be0c91]#289289] -未能延迟初始化角色集合: GL.Objects.Profile`1[[GL.Objects.Education.Education, 总账对象,版本=0.1.1.0, 文化=中立, PublicKeyToken=ebf25c7be4be0c91]]可盈利 没有会话或会话已关闭“ 启动会话 此代码保存实例化的对象 第一个断言通过得很好。epf2有一个id并被实例化 此断言失败。ProfileTables与成功插入id的复合表匹配。但现在,当我尝试访问集合中的第一个元素时,它失败了 这是GetEducationProfile方法调用get的方法实现Fluent nhibernate Nhibernate-未能轻松初始化集合。。。没有会话或会话已关闭,fluent-nhibernate,Fluent Nhibernate,我发现了这个错误,我想知道是否有人知道如何调试它 谢谢 正在初始化[GL.Objects.Profile`1[[GL.Objects.Education.Education, 总账对象,版本=0.1.1.0, 文化=中立, PublicKeyToken=ebf25c7be4be0c91]#289289] -未能延迟初始化角色集合: GL.Objects.Profile`1[[GL.Objects.Education.Education, 总账对象,版本=0.1.1.0, 文化=中立, Publi
publictget(int-id),其中T:IDataObject
{
返回(T)_会话加载(typeof(T),id,LockMode.Read);
}
这是Fluent映射文件中构造函数的定义
public EducationProfileMap()
{
表(“概况”);
Id(x=>x.Id)
.列(“ProfileID”)
.产生于
.HiLo(FluentConst.HiLo_表,
FluentConst.NEXTHI_列,
FluentConst.MAXLO,
格式(FluentConst.WHERE_FMT_STR,“Profile”);
Map(x=>x.Type).CustomType().Column(“ProfileType”);
HasManyToMany(x=>x.可盈利)
.ParentKeyColumn(“ProfileID”)
.ChildKeyColumn(“教育ID”)
.Cascade.All()
.表格(“教育概况”);
}
我很抱歉没有提供更多有关这个问题的信息。
问题来自如何管理会话
我的测试正在实例化以下类:
SaveEducation方法调用以下方法
这将打开一个会话
在返回时,会话被丢弃,因此不会发生延迟加载
我需要做的是,确保在会话仍然打开时进行延迟加载
我很抱歉没有提供更多有关这个问题的信息。
问题来自如何管理会话
我的测试正在实例化以下类:
SaveEducation方法调用以下方法
这将打开一个会话
在返回时,会话被丢弃,因此不会发生延迟加载
我需要做的是,确保在会话仍然打开时进行延迟加载。会话管理可能是NHibernate的一大难题。延迟加载使其更加复杂。会话管理可能是NHibernate的一大难题。延迟加载使其更加复杂。
var watsonService = new WatsonService();
watsonService.SaveEducation(e);
epf1.Profilables.Add(e);
watsonService.SaveEducationProfile(epf1);
epf2 = watsonService.GetEducationProfile(epf1.ID.Value);
Assert.AreEqual(epf1.ID, epf2.ID);
Assert.AreEqual(epf1.Profilables[0].ID, epf2.Profilables[0].ID);
public T Get<T>(int id) where T : IDataObject
{
return (T)_session.Load(typeof(T), id, LockMode.Read);
}
public EducationProfileMap()
{
Table("Profile");
Id(x => x.ID)
.Column("ProfileID")
.GeneratedBy
.HiLo(FluentConst.HILO_TABLE,
FluentConst.NEXTHI_COLUMN,
FluentConst.MAXLO,
String.Format(FluentConst.WHERE_FMT_STR, "Profile"));
Map(x => x.Type).CustomType<int>().Column("ProfileType");
HasManyToMany(x => x.Profilables)
.ParentKeyColumn("ProfileID")
.ChildKeyColumn("EducationID")
.Cascade.All()
.Table("EducationProfile");
}
public WatsonAdaptor(string user)
{
if (DataSession == null)
DataSession = new HibernateSession(
HibernateFactoryManager.HibernateFactory.Watson, user);
}
public int? SaveEducation(Education e) {
try
{
var watson = new WatsonAdaptor("ealite");
watson.Save(e);
return e.ID;
}
catch (Exception ex)