Fluent nhibernate Nhibernate-未能轻松初始化集合。。。没有会话或会话已关闭

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

我发现了这个错误,我想知道是否有人知道如何调试它

谢谢

正在初始化[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的方法实现

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)