-1

ジョイン、アリのカップルのサブセレクトのみを持つ単純な名前付きクエリがいくつかあります。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 でパラメータをハードコーディングしても、同じ結果が得られました。プロファイラーで確認してみましたが、生成された 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 に答える