使用nhibernate进行分割,结果为;无法从“确定成员”;

使用nhibernate进行分割,结果为;无法从“确定成员”;,nhibernate,nhlambdaextensions,Nhibernate,Nhlambdaextensions,这可能很简单,但我似乎对nhibernate如何工作缺乏一些知识。这是我的代码: ICriteria query = Session.CreateCriteria<TblProjectCategory>(); query = query.CreateCriteria<TblProjectCategory>(x => x.TblProjects) .Add<TblProject>(x => x.FldCurrentFunding != 0m)

这可能很简单,但我似乎对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>();
ICriteria query=Session.CreateCriteria();
query=query.CreateCriteria(x=>x.TblProjects)
.Add(x=>x.FldCurrentFunding!=0m)
.Add(x=>x.fld当前融资/x.fld融资目标>=.8m)
.SETRESULT变压器(
新的NHibernate.Transform.DistincTrotentyResultTransformer());
返回query.List();

我得到的结果错误是:“无法确定来自(x.FldCurrentFunding/x.FldFundingGoal)的成员”

NHibernate无法将表达式转换为sql语句,因为is不知道如何处理x.FldCurrentFunding/x.FldFundingGoal。解决方案是将其重写为如下表达式:

ISQLFunction sqlDiv = new VarArgsSQLFunction("(", "/", ")");
(...)
   .Add(
    Expression.Ge(
        Projections.SqlFunction(
            sqlDiv, 
            NHibernateUtil.Double,
            Projections.Property("FldCurrentFunding"),
            Projections.Property("FldCurrentGoal")
        ),
        0.8m 
    )
    )
(...)    
我希望这能给你一些指导