1
我試圖創建一個標準查詢,通過useruploaded抓取「RejectedRecords」,但不會被標記爲被刪除,或者RejectedRecord中的Facility位於用戶分配給設施的列表中(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))。添加(suquery.propertyin) – Jaguar
@Jaguar你是對的,我的鏈條錯了。我現在編輯了答案並測試了正確性的語法和SQL。 –
對。謝謝大家。 – dolphy