1
私は、RejectedRecordの施設がユーザーが割り当てられている施設のリストにあるか、または削除されているとフラグが付けられていないuseruploadedによって "RejectedRecords"を取得する基準クエリを作成しようとしています。 (user.UserFacilities)。私は最初の部分は(ユーザと削除されていない)うまく動作しているが、私はOR節を追加してユーザ機能のコレクションにあるレコードを取得する方法がわからない。 SQLでは、それは次のようになります。NHibernate Criteria APIヘルプが必要です。
SELECT *
FROM RejectedRecords
WHERE (UserUploaded = 1 AND IsDeleted = 0)
OR FacilityId IN (SELECT FacilityId FROM UserFacility WHERE UserId = 1)
ここではC#(サブクエリを実行する方法がわからない)での私の試みです:
public IList<RejectedRecord> GetRejectedRecordsByUser(User u)
{
return base._session.CreateCriteria(typeof(RejectedRecord))
.Add(
(
Expression.Eq(RejectedRecord.MappingNames.UserUploaded, u)
&& Expression.Eq(RejectedRecord.MappingNames.IsDeleted, false)
)
)
.List<RejectedRecord>();
}
コンセプトは正しいですが、私はそれがDisjunction.Add(Expression.And(Eq.useruploaded、Eq.isdeleted))(単純化のための擬似コード)のように書かなければならない....だと思う、それは間違っている足します。 Add(suquery.propertyin) – Jaguar
@Jaguarあなたは正しく私はチェーンが間違っていた。私は今答えを編集し、構文とSQLの正しさをテストしました。 –
の右上にあります。皆さんありがとう。 – dolphy