Разделение с использованием результатов nhibernate в «Не удалось определить участника из» - PullRequest
5 голосов
/ 11 января 2010

Возможно, это что-то простое, но мне, кажется, не хватает некоторых знаний о том, как работает 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)»

1 Ответ

2 голосов
/ 24 июня 2011

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

Я надеюсь, что это даст вам несколько указаний

...