2012-01-23 5 views
-1

私はジョインだけを持つ簡単な名前付きクエリをいくつか持っています。それらのすべては1つを除いて完全に働いています。問題は、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でパラメータを取得しても、同じ結果が得られます。私はプロファイラでチェックしてみましたが、生成された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

関連する問題