2010-01-11 14 views
5

Bu büyük olasılıkla basit bir şey ancak nhibernate'in nasıl çalıştığına dair bazı bilgiler eksik görünüyor. Bu benim kodudur:Nhibernate sonuçlarının bölümlere ayrılması "Üyeyi belirleyemedi"

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>(); 

alıyorum çıkan hatadır: "(x.FldCurrentFunding/x.FldFundingGoal) den üyeyi belirlenemedi"

cevap

2

NHibernate bir sql içine ifadesini çevirmek mümkün değildir deyim çünkü x.FldCurrentFunding/x.FldFundingGoal ile ne yapacağını bilmiyor. Çözelti gibi bir ifadesi bu yeniden yazıyor: Ben bu bazı yön vermek umuyoruz

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