Изображения сообщений об ошибках, которые вы связали, указывают мне, что вы, вероятно, пытаетесь получить доступ к сеансу после того, как он уже был закрыт. Это обычно происходит при попытке получить доступ к загруженным лентам / ссылкам. Например:
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
и говорит: «Сессия закрыта!»
Решение состоит в том, чтобы либо предварительно загрузить свою коллекцию, либо убедиться, что сеанс не выходит за рамки или явно удаляется до того, как вы закончите с ним.