通用NHibernate Linq用func选择

时间:2011-11-30 20:03:38

标签: .net fluent-nhibernate linq-to-nhibernate

我试图在nhibernate对象上进行泛型选择。我正在将Func传递给get方法......

T Get(Func<T, bool> selectQuery)
{
    using (var session = SessionFactory.Session.OpenSession())
    {
        return (from x in session.Query<T>() where selectQuery(x) select x).FirstOrDefault();
    }
}

但是当这个方法执行时,我收到以下错误:

  

“无法将'NHibernate.Hql.Ast.HqlParameter'类型的对象强制转换为'NHibernate.Hql.Ast.HqlBooleanExpression'。”

我试图使用表达式,但得到相同的错误。我错过了一些有趣的东西,或者我不想做的事情?

1 个答案:

答案 0 :(得分:2)

我现在无法验证它,但我想问题是,不是传递表达式树,而是传递委托。试试这个:

T Get(Expression<Func<T, bool>> selectQuery)
{
  using (var session = SessionFactory.Session.OpenSession())
  {
      return (from x in session.Query<T>() where selectQuery(x) select x).FirstOrDefault();
  }
}

(我希望它编译没有错误,手头没有编译器)