1

where 절을 NHibernate 쿼리에 동적으로 추가 할 수 있습니까?C# NHibernate 동적으로 Where 절 추가 (jqgrid)

필자는 사용자가 여러 검색 기준을 입력 한 경우 필요한 경우 Where 절을 반복하고 Where 절을 추가해야하는 절 모음이 있습니다.

이 같은 단일 쿼리, 아무 문제를 쓸 수 : 'A'로 시작하는 모든 이름을 얻을 :

IEnumerable<Customer> customers = nHibernateSession.Query<Customer>().Where(x => x.Name.StartsWith("a")).ToList(); 

을하지만 그때 내가 필요 효과적으로이 에 다른 곳에 절을 추가하는 방법을 모른다

foreach (clauses in SelectionClauses) 
{ 
    //add a .Where(Clause) to The Session.Query 
} 

나는 nHibernateSession.Query이 방법을 사용할 수 없음을 의심 ... 사람이이 작업을 수행하는 방법을 알고 있나요 : 이런 식으로 뭔가? 당신이 문자열을 사용하는 경우 BuildExpression 예를

을 위해> 식을 돌려

var query = session.Query<MyClass>(); 

foreach(var clause in clauses) 
    query = query.Where(clause.BuildExpression()); 

그러나이 고통스러운 얻을 수 있습니다 : 당신은 같은 것을 수행하여 Linq에 제공 (session.Query)이 작업을 수행 할 수 있습니다

답변

1

속성 이름을 지정해야하며, session.QueryOver 또는 session.CreateCriteria를 사용하여 결과를 얻는 것이 훨씬 쉬울 것입니다. 둘 다 식을 통해 이름 대신 속성을 쿼리하는 기능을 지원합니다.

+0

감사합니다. @Martin! 나는 nHibernate에 대해 처음이다. 위 쿼리를 사용하여 쿼리를 사용하여 해결하고 switch 문을 사용하여 내가 사용하는 식을 결정합니다. –