이것은 분명 할 수 있지만 몇 시간 동안 내 머리를 쾅쾅 대고 있었고 어디서 잘못되었는지 알 수 없었습니다.OR 대신 OR 쿼리 결과가 나오는 NHibernate 분리
NHibernate 쿼리에 OR 조건을 추가하는 테스트를 위해 작은 코드를 실행하려고합니다. 이것은 내가 가지고있는 코드입니다.
using (ISession session = NHibernateHelper.OpenSession())
{
ICriteria criteria = session.CreateCriteria<TestObject>();
int[] ids = {1, 2, 3};
foreach (int id in ids)
{
ICriterion criterion = Restrictions.Eq("Id", id);
criteria.Add(Restrictions.Disjunction().Add(criterion));
}
IList<TestObject> items = criteria.List<TestObject>();
return items;
}
ID가 1 - 3 인 모든 테스트 개체를 반환하기를 기대하는 간단한 내용입니다. 그러나 코드를 실행할 때 생성 된 쿼리는 ID가 1이고 ID가 2이고 ID가 3 인 개체를 찾는 것입니다. 놀랍지 않게도 아무 것도 반환하지 않습니다.
매핑이 올바르게 설정되었으므로 (모든 객체를 추가/편집/제거/나열 할 수 있음)이 ID가있는 객체가 있습니다.
나는 분명히 잘못된 것을하고 있습니까? Disjunction을 사용하는 샘플은 온라인에서 모두 본 것처럼 사용합니다. 나는 왜 그것이 AND를 계속 사용 하는지를 알지 못한다.
감사합니다.
매직, 치료를했다. 코드를 볼 때 의미가 있습니다. 개별 OR을 "함께 사용"한다고 생각하지 않았습니다. 코드에 대한 유일한 사소한 변경은 다음과 같이 분리를 작성하는 것입니다. 접합 분리 = Restrictions.Disjunction(); (ICriterion에는 '추가'가 없습니다). 감사합니다. –