我试图在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'。”
我试图使用表达式,但得到相同的错误。我错过了一些有趣的东西,或者我不想做的事情?
答案 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();
}
}
(我希望它编译没有错误,手头没有编译器)