-1

我有一些简单的命名查询,只有连接、蚂蚁对子选择。除了一个之外,它们都工作得很好。问题是,当我在 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 是完美的,并且在管理工作室中返回所有 177 个结果。
InstitutionIndexDTO工作正常,因为我将它与其他命名查询一起使用。

我有一个有效的命名查询,导致问题的原因是那个查询,添加了额外的 INNER JOIN 并更改了 WHERE 子句。两个查询都返回相同的列。
也许有人有一个想法,我可能做错了什么?

4

1 回答 1

0

我测试了我的代码并意识到这一行导致了问题:
(CASE WHEN (DATEPART(dw, GETDATE())) = 1 THEN 7 ELSE (DATEPART(dw, GETDATE()) - 1) END)

如果我理解得很好,问题出在 DATEPART 函数中。有人遇到过这个问题吗?

于 2012-01-24T11:48:43.100 回答