2010-01-11 3 views
5

이것은 아마도 간단 할 수도 있지만 nhibernate가 작동하는 방식에 대한 지식이 부족한 것처럼 보입니다. 이건 내 코드입니다 :nhibernate를 사용하여 나눌 경우 "회원을 확인할 수 없습니다."

ICriteria query = Session.CreateCriteria<TblProjectCategory>(); 
query = query.CreateCriteria<TblProjectCategory>(x => x.TblProjects) 
    .Add<TblProject>(x => x.FldCurrentFunding != 0m) 
    .Add<TblProject>(x => x.FldCurrentFunding/x.FldFundingGoal >= .8m) 
    .SetResultTransformer(
     new NHibernate.Transform.DistinctRootEntityResultTransformer()); 

return query.List<TblProjectCategory>(); 

내가 얻을 결과 오류는 다음과 같습니다 "(x.FldCurrentFunding/x.FldFundingGoal)에서 멤버를 결정할 수 없습니다"

답변

2

자 NHibernate는 SQL로 표현을 번역 할 수 없습니다 왜냐하면 x.FldCurrentFunding/x.FldFundingGoal을 어떻게 처리해야할지 모르기 때문입니다. 이 솔루션은 같은 표현이 재 작성한다 :이 당신에게 방향을 줄 것이다 희망

ISQLFunction sqlDiv = new VarArgsSQLFunction("(", "/", ")"); 
(...) 
    .Add(
    Expression.Ge(
     Projections.SqlFunction(
      sqlDiv, 
      NHibernateUtil.Double, 
      Projections.Property("FldCurrentFunding"), 
      Projections.Property("FldCurrentGoal") 
     ), 
     0.8m 
    ) 
    ) 
(...)  

관련 문제