nHibernate 命名查询不返回所有结果
Posted
技术标签:
【中文标题】nHibernate 命名查询不返回所有结果【英文标题】:nHibernate named query returns not all results 【发布时间】:2012-01-23 14:22:55 【问题描述】:我有一些简单的命名查询,只有连接、蚂蚁对子选择。除了一个之外,它们都工作得很好。问题是,当我在 Management Studio 中运行 SQL 代码时,我得到 177 个结果,而当我使用相同的 SQL 代码运行命名查询时,我得到 20 个结果。我不知道为什么会这样。我将命名查询称为所有其他查询:
public IList<InstitutionIndexDTO> GetInstitutionIndexByWorkTimeSearch(int time, int institutionType)
IQuery query = GetCurrentSession()
.GetNamedQuery("GetInstitutionsListByTime")
.SetInt32("Type", institutionType)
.SetInt32("TimeUntilClose", time)
.SetResultTransformer(Transformers.AliasToBeanConstructor(typeof(InstitutionIndexDTO).GetConstructors()[0]));
return query.List<InstitutionIndexDTO>();
即使我在 SQL 中对参数进行了硬编码,我仍然得到相同的结果。我尝试使用 Profiler 检查,但生成的 SQL 是完美的,并且在 Management Studio 中返回所有 177 个结果。InstitutionIndexDTO
工作正常,因为我将它与其他命名查询一起使用。
我有一个有效的命名查询,导致问题的原因是那个查询,添加了额外的 INNER JOIN 并更改了 WHERE 子句。两个查询都返回相同的列。 也许有人有想法,我可能做错了什么?
【问题讨论】:
能否请您发布查询本身 【参考方案1】:我测试了我的代码,发现这行导致了问题:(CASE WHEN (DATEPART(dw, GETDATE())) = 1 THEN 7 ELSE (DATEPART(dw, GETDATE()) - 1) END)
如果我理解得很好,问题出在 DATEPART 函数中。有人遇到过这个问题吗?
【讨论】:
以上是关于nHibernate 命名查询不返回所有结果的主要内容,如果未能解决你的问题,请参考以下文章
列错误中的冒号 ':' - 并非所有命名参数都已在 Nhibernate 中设置?