Длинное название, я знаю, но я искал повсюду и не смог найти это сообщение об ошибке, исходящее от вызова этой функции, поэтому я подумал, что это может быть более полезным.
Это фрагмент кода:
string hql = " from LabRequest r where 1 = 1 ";
hql += " and 0 < (select count(rs) ";
hql += " from r.Statuses rs ";
hql += " where rs.StatusType.Description IN ('Assigned','Submitted')";
hql += " ) ";
//Session.Clear();
IQuery query = Session.CreateQuery(hql);
IQueryable<LabRequest> requests = query.List<LabRequest>().AsQueryable<LabRequest>();
Это функция (или большая ее часть) в моем объекте доступа к данным в приложении MVC, над которым я работаю. Это для страницы поиска, и когда страница запускается, эта функция вызывается точно так же, как вы видите в коде, и работает.
Затем, не меняя ничего, я обновляю страницу, которая проходит те же шаги и снова вызывает этот код, в точности так, как вы его видите. Но во второй раз через него происходит сбой в части query.List () последней строки с ошибкой в теме.
Сессия определена в другом DAO как:
session = NHibernateHelper.GetCurrentSession();
Я знаю, что это трудно анализировать без фактической базы данных, но я просто хотел посмотреть, сможет ли кто-нибудь указать мне правильное направление или указать на что-то очевидное в NHibernate, поскольку я в основном ничего не знаю об этом.
Редактировать: забыл упомянуть, что когда я раскомментирую Session.Clear (), он работает нормально, поэтому подумал, что ответ как-то связан с этим, и если это так, как я должен обрабатывать, когда очищать ()?
Редактировать 2: Это часть ответа, но я вызываю очень похожую функцию перед этим во второй раз. То, что я не могу понять, - то, почему тот влияет на тот, который я отправил. Переменная 'query' является локальной, поэтому, похоже, что-то с Session.CreateQuery. Кто-нибудь знает, что это будет?
Спасибо,
Джефф