2009-06-09 73 views
0

我有一个Nhibernate类库和一个引用它的Web应用程序。我可以得到的数据形成的产品表,这很好,但是当我刷新它,我收到低于这个issue.Please看到图像:使用Nhibernate时的WebDev问题

http://vi-vn.com/pubs/images/NhibernateWeb.jpg (死链接)

是否有办法来纠正他的问题?

+0

应该如何知道问题是什么?您应该调试您的服务器并提供发生的异常和生成它的代码。 – 2009-06-09 09:55:20

+0

http://vi-vn.com/pubs/images/SessionClose.jpg 是的。我使用NHibernate-2.1.0.Alpha2-bin – QuachNguyen 2009-06-09 11:08:25

回答

1

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

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 

NHibernate的看到了MyObjects收集延迟加载和尚未初始化,所以它会试图通过其关联的会话来查询集合。但是,该会话已经关闭,所以它会抛出ObjectDisposedException并说“会话已关闭!”

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