5

これはおそらく単純なことですが、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)からメンバーを判別できませんでした」です。

4

1 に答える 1

2

NHibernate は x.FldCurrentFunding / x.FldFundingGoal をどう処理すればよいかわからないため、式を sql ステートメントに変換できません。解決策は、これを次のような式に書き換えることです。

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

これがあなたにいくつかの方向性を与えることを願っています

于 2011-06-23T20:07:58.920 に答える