长标题,我知道,但我搜遍了所有,并找不到来自该函数调用的错误消息,所以我认为这可能会更有用。NHibernate IQuery.List错误“该计数= 4的SqlParameterCollection的索引4无效。”
这是代码片段:
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:这是答案的一部分,但我第二次在此之前调用一个非常类似的函数。我无法弄清的是为什么那个影响我发布的那个。 '查询'变量是本地的,所以它似乎是Session.CreateQuery的东西。任何人都知道那会是什么?
感谢, 杰夫
您是否检查过日志输出? – 2009-01-14 22:06:02
抱歉,不确定你的意思是什么日志。错误日志只是说我在主题中输入的内容? – 2009-01-14 22:30:05