検索を実行するためにnHibernate条件式をビルドしようとしています。次のデータ・モデルを考えるnHibernateでの結合のフィルター
:
- 操作は、ゼロ以上 セッションを有することができます。
- 操作の種類が0より大きく、操作タイプが である可能性があります。
が、私は次の基準に基づいて、すべてのセッションを検索したい:操作 のisActiveフラグがtrueの場合は
- (必須)、( フラグが
O真実であるIsPublishedオプションで)、操作状態/終了日がユーザー指定の日付範囲内にある場合
o(オプション)およびセッションregionidは、ユーザ指定のID
(任意に)O、セッション分割を(任意に)ユーザ指定ID
Oと一致するとの一致Operation.OperationTypesは、タイプIDのユーザが指定したリストにある場合
私は(すべてのオプションパラメータが供給されている与えられた)として、SQLでこれを表現します:
0:としてSELECT
[Session].*
FROM
[OperationTypeOperation]
LEFT OUTER JOIN
[Operation] ON [OperationTypeOperation].[OperationId] = [Operation].[OperationId]
RIGHT OUTER JOIN
[Session] ON [Operation].[OperationId] = [Session].[OperationId]
WHERE
([Operation].[IsPublished] = 1)
AND
([Operation].[IsActive] = 1)
AND
([Session].[RegionId] = 66)
AND
([Session].[DivisionId] = 99)
AND
([Operation].[AdvertisingStartDate] < GETDATE())
AND
([Operation].[AdvertisingEndDate] > GETDATE())
AND
([OperationTypeOperation].[OperationTypeId] IN (1, 2, 3))
そして、私のNHibernateはクエリで
nHibernate関数が演算の型について不平を言っていて、 "InExpressionでコレクションを使用できません"という例外がスローされています。プラス私は結合されたテーブルを正しくフィルタリングしているかどうかはわかりません。誰も正しい方法で上記のSQLをnHibernate式として書くことができますか?