与Nhibernate合作时的WebDev问题

与Nhibernate合作时的WebDev问题,nhibernate,Nhibernate,我有一个Nhibernate类库和一个引用它的Web应用程序。我可以从Product表中获取数据,这很好,但当我刷新它时,我收到此问题。请参见下图: (死链接) 有没有办法纠正他的问题?您链接的错误消息图像向我表明,您可能正在尝试在会话关闭后访问该会话。这通常发生在尝试访问延迟加载的集合/引用时。例如: class MyObject { public virtual IList<MyOtherObject> MyObjects { get; set; } } MyObjec

我有一个Nhibernate类库和一个引用它的Web应用程序。我可以从Product表中获取数据,这很好,但当我刷新它时,我收到此问题。请参见下图:

(死链接)


有没有办法纠正他的问题?

您链接的错误消息图像向我表明,您可能正在尝试在会话关闭后访问该会话。这通常发生在尝试访问延迟加载的集合/引用时。例如:

class MyObject
{
    public virtual IList<MyOtherObject> MyObjects { get; set; }
}

MyObject obj = session.Load<MyObject>(1);

// Some stuff happens, the session is explicitly closed or goes out of scope

// Later, obj is still tied to the (now closed) session but code tries to:
int count = obj.MyObjects.Count; // MyObjects is lazy-loaded, NHibernate tries to query
类MyObject
{
公共虚拟IList MyObject{get;set;}
}
MyObject obj=session.Load(1);
//发生某些情况时,会话显式关闭或超出范围
//稍后,obj仍然绑定到(现在已关闭)会话,但代码尝试:
int count=obj.MyObjects.count;//MyObject是延迟加载的,NHibernate尝试查询
NHibernate发现MyObjects集合是延迟加载的,尚未初始化,因此它尝试通过与其关联的会话查询集合。但是,该会话已经关闭,因此它抛出一个
ObjectDisposedException
,并说“会话已关闭!”


解决方案是预加载您的集合,或者确保会话未超出范围,或者在完成之前已明确处理。

如何知道问题所在?您应该调试服务器,并提供发生的异常以及产生异常的代码。是的。我再次使用NHibernate-2.1.0.Alpha2-bin,异常窗口底部有一个很小但很有用的链接,上面写着“将异常详细信息复制到剪贴板”。当点击这个按钮时,你会得到堆栈跟踪、内部异常、错误消息以及所有你需要的简单文本,以粘贴到某个地方,比如一个stackoverflow问题。大多数情况下,一段代码也是有用的。否则人们不得不猜测你在做什么,你得不到你需要的答案,或者根本得不到任何答案。