首页 新闻 会员 周边 捐助

Nhibernate.Linq 问题

0
悬赏园豆:10 [待解决问题]

我在用Nhibernate中应用 specification patten模式,使用到两个Lamda表达时出现下面错误。

'NHibernate.Hql.Ast.HqlBitwiseOr' to type 'NHibernate.Hql.Ast.HqlBooleanExpression'

湘军投研的主页 湘军投研 | 初学一级 | 园豆:200
提问于:2011-11-03 11:11
< >
分享
所有回答(1)
0

我也遇到了,有解决方案么?

jeremyyang824 | 园豆:202 (菜鸟二级) | 2013-03-15 18:00

这个不支持,我当时用的好像3.2版本的。微软自己带的可以支持,后面就没有这个规约模式了。

支持(0) 反对(0) 湘军投研 | 园豆:200 (初学一级) | 2013-03-18 15:02

@JinaCookies: 

我也用的NH3.2的版本,后来我改了下其中组合条件的实现方式,现在可以了,主要代码如下:

private static Expression<EXP> Compose<EXP>(this Expression<EXP> leftSide, Expression<EXP> rightSide, ExpressionType expType)
{
var rightInvoke = Expression.Invoke(rightSide, leftSide.Parameters.Cast<Expression>());
var newExpression = Expression.MakeBinary(ExpressionType.AndAlso, leftSide.Body, rightInvoke);
return Expression.Lambda<EXP>(newExpression, leftSide.Parameters);
}

public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
{
return first.Compose(second, ExpressionType.AndAlso);
}

public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first, Expression<Func<T, bool>> second)
{
return first.Compose(second, ExpressionType.OrElse);
}

支持(0) 反对(0) jeremyyang824 | 园豆:202 (菜鸟二级) | 2013-03-18 15:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册