2012-01-23 59 views
-1

我有几个简单的命名查询,只有连接,ant夫妇子选择。除了一个,他们都是完美的。问题是,当我在Management Studio中运行SQL代码时,我得到了177个结果,并且当我使用相同的SQL代码运行命名​​查询时,我得到了20个结果。我无法弄清楚为什么。我称之为命名查询的所有其他:nHibernate命名查询返回不是所有结果

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 harcoded参数,我仍然得到了同样的结果。我试着用Profiler来检查,但生成的SQL是完美的,并在管理工作室返回所有177个结果。
InstitutionIndexDTO工作正常,因为我用它与其他命名查询。

我有一个工作命名查询,并在导致问题从一个制造,增加额外的INNER JOIN和不断变化的WHERE子句。两个查询都返回相同的列。
也许有人有一个想法,我可以做错了什么?

+0

你可以发表查询本身请 – Nexus

回答

0

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

如果我理解不错,问题是在DATEPART功能。有没有人遇到过这个问题?

+0

我解决了问题,通过使用'SET DATEFIRST 1' – JNM