2010-01-11 8 views
5

Esto es probablemente algo simple, pero me parece que me falta algo de conocimiento sobre cómo funciona el nhibernate. Este es mi código:Dividir usando los resultados de nhibernate en "No se pudo determinar el miembro de"

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

El error resultante que recibo es: "No se pudo determinar miembro de (x.FldCurrentFunding/x.FldFundingGoal)"

Respuesta

2

NHibernate no es capaz de traducir la expresión en un sql declaración porque no sabe qué hacer con x.FldCurrentFunding/x.FldFundFingingGoal. La solución está reescribiendo esto a una expresión como:

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

espero que esto le dará algunas direcciones

Cuestiones relacionadas