2016-07-13 2 views
2

nhibernate를 사용하여 쿼리를 실행하고 싶지만 별칭없이 인라인 문자열로 매개 변수를 추가하고 싶습니다. 다음 예제는 내 뜻을 설명합니다.Nhibernate는 인라인 텍스트로 매개 변수를 추가합니다.

SELECT * FROM Accounts WHERE AccountNumber in (@p0 , @p1 , @p2) 

의도 쿼리 : 참고로

SELECT * FROM Accounts WHERE AccountNumber in ('0','1','2') 

:

표준 쿼리를 생성 나는 HQL

+0

질문에 대한 답을 다시 해주실 수 있습니까? 매개 변수화 된 쿼리를 원하지 않는다는 것을 의미합니까? –

+0

네, 맞습니다. 내가 nhibernate에서 쿼리를 구축하는 표준 방법을 사용하지만 생성 된 쿼리 (인라인 매개 변수)에 매개 변수가없는 경우, 그것을 달성하기 위해 쿼리에 대한 설정과 같은 것이 있다면? – mdameer

답변

1

마지막으로, 나는 람다 표현식과 일반 텍스트 표현 하이브리드 쿼리를 작성하는 데 사용 Expression.Sql를 사용하여 솔루션을 발견하고, 다음 코드를 설명합니다 :

var accountQuery = _session.CreateCriteria(typeof(AccountRecord)); 
accountQuery.Add(Expression.Sql("AccountNumber in ('" + string.Join("','", contractAccountsList) + "')")); 
accountQuery.Add(Restrictions.Eq("IsRegistered", true)); 
var result = accountQuery.List().AsEnumerable(); 

당신은 Criteria 또는 QueryOver를 사용하여 구축 할 수 있습니다 원하는대로.

모두에게 감사드립니다.이 문제를 해결하는 데 도움을 주려고합니다.

0

가 사용할 수 오차드 CMS를 사용하고 있습니다 :

var accountNumbers = new[] {1, 2, 3, 4}; 

var hql = string.Format("from Account where Account.AccountNumber in ({0})", string.Join(",",accountNumbers)); 

var results = session.CreateQuery(hql).List<Account>(); 
+0

친애하는, 이것은 동일한 매개 변수화 된 쿼리를 생성합니다. – mdameer

+0

@mdameer 편집 참조 – mxmissile

관련 문제