Hibernate에 LINQ로 검색하려고합니다.Linq to nhibernate sql 1 = 1 equivalent
from d in rep.QueryAll<Document>()
where
d.Plata != null && d.Contractant != null && d.Stadiu == StadiuDocument.Polita
&& (d.NrPolita.Contains(query) ||
d.Contractant.CodUnic.Contains(query) ||
d.Contractant.Denumire.Contains(query) ||
d.Plata.IdTranzactie.Contains(query)) &&
((TipPolita != null) ? (d.Tip == (TipProdus)TipPolita) : (1 == 1)) &&
((StareDocument != null) ? (d.Stare == (StareDocument)StareDocument) : (1 == 1))
select new
{
문제는 내가 일반적으로 값이 어떤 선택 입력을 가지고있다 :
나는이 코드를 가지고있다. 이런 식으로 뭔가가 :
<select id="tippolita" >
<option value = "-1">Any value</option>
<option value = "1">Value 1</option>
<option value = "2">Value 2</option>
<option value = "3">Value 3</option>
</select>
"모든 값은"내가 여기에 쓴 것처럼 where
문이 진실해야 선택 그래서 때
((TipPolita != null) ? (d.Tip == (TipProdus)TipPolita) : (1 == 1)) &&
((StareDocument != null) ? (d.Stare == (StareDocument)StareDocument) : (1 == 1))
이 거의 내가 SQL에 쓴다 것과 동일합니다.
오류가 파일 "Linq에 \ NHLinqExpression.cs"
_expression = PartialEvaluatingExpressionTreeVisitor.EvaluateIndependentSubtrees(expression);
이 오류는 실제로 재 LINQ 라이브러리에서 제공에 라인 (33)에 NHibernate에 소스 코드 내에서 발생합니다.
한 가지 확실한 해결 방법은 3 개의 if 문을 작성하고 각각에 적절한 LINQ 쿼리를 넣는 것입니다.하지만 훨씬 많은 코드를 작성해야합니다.
전체 쿼리를 복사하여 붙여 넣지 않고 약간만 수정하면 이러한 종류의 쿼리를 수행 할 수 있습니까?
P.
이 내부 예외 :
InnerException: System.NullReferenceException
Message=Object reference not set to an instance of an object.
Source=Anonymously Hosted DynamicMethods Assembly
StackTrace:
at lambda_method(Closure
) 나는이를 다시 것
1 == 시도 1 => 참 똑같은 문제 – Para
@Para : 대체 배합을 시도 했습니까? 질문을 게시하기 전에'1 == 1'을'true'로 바꾸려고 시도했다면, 그렇게 말하면 좋을 것입니다. –
는 지금도 시도했습니다. (게시하기 전에 다른 하나를 시도해 보았습니다. 그 이유는 내가 beofre를 언급했기 때문입니다.) 이제는 두 가지 모두 시도해 보았습니다. 오류가 발생했습니다. – Para