Разделение с использованием 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)».


person Community    schedule 11.01.2010    source источник


Ответы (1)


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

Я надеюсь, это укажет тебе путь

person Peter    schedule 23.06.2011