【发布时间】:2016-01-05 09:21:54
【问题描述】:
我正在尝试为我的收藏构建一些过滤器构建器。
public static NHibernate.Criterion.Conjunction CreateConjunction<T>(this IEnumerable<FilterDescriptor> _filters)
{
NHibernate.Criterion.Conjunction conjunction = new NHibernate.Criterion.Conjunction();
foreach (var filter in _filters)
{
PropertyInfo propertyInfoObj = typeof(T).GetProperty(filter.Member);
conjunction.Add<T>(x => propertyInfoObj.GetValue(x, null) == filter.Value);
}
return conjunction;
}
我当然可以说在调用连线时。Add 会抛出一个错误“变量 x”,类型为“Foo”,从范围“”引用,但它没有定义为 nhibernate queryOver'。
如何构建可以被 queryOver.Where() 接受的连词或表达式?
我正在寻找相当通用的解决方案来向我的 QueryOvers 添加过滤,有什么建议吗?
【问题讨论】:
-
我现在没有时间创建完整的答案,但this post(免责声明:这是我的个人博客)可能会有所帮助。
-
已经红了 :D 我决定改变我的方法,只使用基本表达式创建表达式构建器,因为没有像我上面介绍的那样使用 PropertyInfo 的选项。谢谢你关心安德鲁。
-
好的--如果你弄明白了,在这里发布你的问题的答案肯定会有所帮助,以便其他人可以找到它
标签: c# nhibernate queryover nhibernate-criteria